問題タブ [google-container-builder]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Spring Boot Java アプリケーションの COPY または ADD コマンドを使用した Google Cloud Platform パイプライン/コンテナ ビルダーの問題ビルド Docker イメージ
Spring Boot (2.1.3)、Java 8、Maven を使用して、基本的な HelloWorld マイクロサービスを作成しました。
pom.xml には、以下のような Maven プラグイン エントリがあります。
Dockerfileは以下のようになります
コマンドを使用してローカル マシンにイメージを作成しました
そこからコンテナを作成して検証。docker-hub アカウントと github アカウントにコードをチェックインしました。
Google クラウド プラットフォーム (GCP) にログインし、kubernetes クラスターを作成し、helloworld マイクロサービス コードが存在する github url を構成して (コンテナー ビルダーを使用して) パイプラインを作成しました。ビルドを実行するには 2 つのオプションがあります (Dockerfile または cloudbuild.yaml を使用)。Dockerfile を使用してビルドを実行しています。
ビルドが選択されて実行されると、Dockerfile のこの行で失敗します
GCP ログに表示されるエラー:
COPY コマンドで置き換えようとしましたが、問題は同じです。
注: 私は cloudbuild.yaml を使用しようとしましたが、これが私の cloudbuild.yaml の外観です。
これは何の違いもありませんでした。問題は同じままです。
Springboot Java アプリケーションに、Dockerfile が Google Cloud Platform で正常に構築されるための特定の構成があるかどうか、何か考えはありますか?
更新 - 1
ローカル マシンの手順の下で試したコメントに基づいています。
コマンドを実行しました
mvn clean
。そのきれいなターゲットフォルダ更新された Dockerfile
FROM maven:3.5-jdk-8 AS build
COPY src .
pom.xml をコピーします。
RUN mvn -f pom.xml クリーン パッケージFROM openjdk:8
VOLUME /tmp
COPY --from=build target/helloworld.jar helloworld.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","helloworld.jar"]
コマンド
docker build . -t helloworld:v1
を実行すると、そのイメージが作成されました。次に、コマンドを実行してコンテナーを開始します。
docker run -p 8081:8081 -n helloworld-app -d helloworld:v1
コンテナが起動して終了し、ログに次のエラーが表示されます:
Exception in thread "main" java.lang.ClassNotFoundException: com.example.HelloWorldApplication at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
kubernetes - クラスタの 1 つから現在の GKE プロジェクト ID をプログラムで取得するにはどうすればよいですか?
Java クライアントまたは GCloud API 自体を介して、そのクラスタの 1 つから現在の GKE プロジェクト ID を取得したいと考えています。
- 特定の Google Cloud プロジェクトの GKE クラスタで Java コンテナを実行しています
ClusterManagerClient
を適切な値で初期化しますClusterManagerSettings
-> このクライアントでこの特定のプロジェクト ID を取得することは可能ですか?
(各 GKE クラスタ内に、実行中の現在のプロジェクトを知ることができるグローバル コンテキストがあることを期待しています)。
ありがとうございました
google-cloud-platform - コミュニティビルダーをキャッシュできますか?
ビルド パイプラインで Helm を使用する必要があります。ドキュメントに記載されているように、 Helm コミュニティ ビルダーのソースをダウンロードし、ビルドされたイメージを GCR にプッシュしました。
パイプラインでビルダーを使用すると、Google ビルドが GCR からビルダー イメージをダウンロードして Helm コマンドを実行するのに、途方もない時間がかかります。
このプロセスをスピードアップする方法はありますか? どうにかしてビルダー イメージの中間層をキャッシュできますか?