問題タブ [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.

0 投票する
1 に答える
438 参照

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

ローカル マシンの手順の下で試したコメントに基づいています。

  1. コマンドを実行しましたmvn clean。そのきれいなターゲットフォルダ

  2. 更新された 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"]

  1. コマンドdocker build . -t helloworld:v1を実行すると、そのイメージが作成されました。

  2. 次に、コマンドを実行してコンテナーを開始します。 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)

0 投票する
1 に答える
2087 参照

kubernetes - クラスタの 1 つから現在の GKE プロジェクト ID をプログラムで取得するにはどうすればよいですか?

Java クライアントまたは GCloud API 自体を介して、そのクラスタの 1 つから現在の GKE プロジェクト ID を取得したいと考えています。

  • 特定の Google Cloud プロジェクトの GKE クラスタで Java コンテナを実行しています
  • ClusterManagerClientを適切な値で初期化しますClusterManagerSettings

-> このクライアントでこの特定のプロジェクト ID を取得することは可能ですか?

(各 GKE クラスタ内に、実行中の現在のプロジェクトを知ることができるグローバル コンテキストがあることを期待しています)。

ありがとうございました

0 投票する
1 に答える
39 参照

google-cloud-platform - コミュニティビルダーをキャッシュできますか?

ビルド パイプラインで Helm を使用する必要があります。ドキュメントに記載されているように、 Helm コミュニティ ビルダーのソースをダウンロードし、ビルドされたイメージを GCR にプッシュしました。

パイプラインでビルダーを使用すると、Google ビルドが GCR からビルダー イメージをダウンロードして Helm コマンドを実行するのに、途方もない時間がかかります。

このプロセスをスピードアップする方法はありますか? どうにかしてビルダー イメージの中間層をキャッシュできますか?