背景 開発プロセス中に Docker コンテナ化をサポートするために、通常は Maven を使用してコンパイルおよびパッケージ化し、イメージを生成します。これにより、オンライン効率が大幅に向上し、容量を迅速かつ動的に拡張したり、すばやくロールバックしたりできるため、非常に便利です。 docker-maven-plugin プラグインは、Maven プロジェクトでの簡単な構成を通じて、イメージを自動的に生成し、ウェアハウスにプッシュできるように設計されています。 スポティファイ、ファブリック8 ここで使用される2つの主なプラグインは、spotifyとfabric8です。 - XMLを介してDockerfileを構成するか、外部Dockerfileをマウントして、DockerリモートAPIを呼び出してイメージを構築します。 ピグマイクロサービスプラットフォームのすべてのコンテナ化はこの構造に基づいています <プラグイン> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> ... - XMLで定義されたDockerfileを構成するか、外部Dockerfileをマウントします </プラグイン> <プラグイン> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> ... - XMLで定義されたDockerfileを構成するか、外部Dockerfileをマウントします </プラグイン> 対応するプラグインサイクルを実行します mvn docker:build && mvn docker:push ジブ プロジェクトがリリースされるたびに実際に変更されるコードの量はそれほど多くなく、特に依存 jar が変更される可能性は小さいです。最初の 2 つのプラグインを使用してイメージをビルドすると、毎回完全なビルドが実行され、ストレージと帯域幅のリソースが無駄になります。 Jib は、Google が 2018 年 7 月にリリースした Java アプリケーションのイメージをビルドするためのツールです (Maven と Gradle をサポート)。ビルド キャッシュを再利用でき、ビルドの高速化、転送量の削減ができるのが利点です。 <!-- XML 経由で Dockerfile を設定します。これは基本的に外部 Dockerfile と同じです --> <プラグイン> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> </プラグイン> mvn jib:dockerビルド 上記3つの解決策の問題点 実際の開発プロセスでは、ほとんどの Spring Boot プロジェクトは同じ方法で Dockerfile を構築し、XML または外部 Dockerfile を通じて再定義する必要はありません。 上記のプラグインには Dockerfile 定義に関する比較的高度な知識が必要であり、開発者にとって使いにくいものです。 Spring Boot 2.3 以降では、Jar 階層化テクノロジを使用する理由はありません。 解決 Spring Boot 2.4 では、オリジナルの spring-boot-maven-plugin に統合された独自の docker ビルド ツールがリリースされました。イメージのビルドを完了するには、対応するターゲット ウェアハウスとホスト情報を構成するだけです。 上図は、以下の構成で完成します。開発マシンにDockerをインストールせずに、192.168.0.10のDocker Remote API経由でイメージをビルドし、192.168.0.20のイメージウェアハウスに公開します。 <プラグイン> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <構成> <画像> <名前>192.168.0.20/pig4cloud/${プロジェクト.artifactId}</名前> <!-- ビルド実行後に自動的にプッシュ --> <publish> 真</publish> </画像> <!--ビルド ホスト情報を構成します。このマシンでは構成は必要ありません--> <ドッカー> <ホスト>http://192.168.0.10:2375</ホスト> <tlsVerify> 偽</tlsVerify> <レジストリを公開> <username>ユーザー名</username> <password>パスワード</password> <url>192.168.0.20</url> </レジストリを公開> </ドッカー> </構成> </プラグイン> イメージの構築と自動リリースを完了するには、次のコマンドを実行します。 mvn spring-boot:ビルドイメージ その他の注意事項 Dockerホストの設定が有効にならない ノードは下図の①のように構成されているが、②はホストが不整合であることを示すエラーを報告している $DOCKER_HOST 環境変数がローカルに設定されているかどうかを確認します。ソースコードを読んでみると、この変数が最初に読み込まれることがわかりました。 ⋊> ~ $DOCKER_HOST をエコーします 11:07:51 172.17.0.111:2375 のポート番号は、次のとおりです。 ネットワークサポート ビルド プロセス中にいくつかのログを傍受すると、以下では GitHub から約 100M の関連依存関係をダウンロードする必要があり、このプロセスは失敗する可能性があります。この問題を解決するには、プロキシを設定するか、外部の ECS を使用することをお勧めします。 :: スプリングブート :: (v2.4.0) [INFO] > 実行中のクリエイター [INFO] [作成者] https://github.com/bell-sw/Liberica/releases/download/8u275+1/bellsoft-jre8u275+1-linux-amd64.tar.gz からダウンロード [INFO] [creator] JVMKill Agent 1.16.0: レイヤーへの貢献 [INFO] [作成者] https://github.com/cloudfoundry/jvmkill/releases/download/v1.16.0.RELEASE/jvmkill-1.16.0-RELEASE.so からダウンロードしています [INFO] [作成者] https://repo.spring.io/release/org/springframework/cloud/spring-cloud-bindings/1.6.0/spring-cloud-bindings-1.6.0.jar からダウンロードしています [INFO] [作成者] チェックサムを検証しています [情報] [作成者] 192.168.0.20/pig4cloud/demo:latest [情報] [INFO] イメージ '192.168.0.20/pig4cloud/demo:latest' が正常にビルドされました [INFO] > イメージ '192.168.0.20/pig4cloud/demo:latest' を 100% プッシュしています [INFO] > イメージ '192.168.0.20/pig4cloud/demo:latest' をプッシュしました [情報] ビルド成功 Spring Boot 2.4 の新機能であるワンクリックで Docker イメージをビルドする機能についての記事はこれで終わりです。Spring Boot 2.4 の Docker イメージビルドの詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: mysqlを使用して、URLから返されたhttp GETリクエストデータを記録します。
Mac で開発されたプロジェクトがあり、パッケージ npm i がインストールされており、すべて正常...
問題の説明:デスクトップ コンピューターとキャンパス ネットワークを使用して、有線モードでインターネ...
目次1. コンテナサービスの更新とDockerコンサルの検出1. サービス登録と検出とは何ですか? ...
Tomcatをインストールする前に、まずJDK環境をインストールしてくださいLinux サーバー上で...
sudo コマンドを使用すると、信頼できるユーザーは別のユーザー (デフォルトでは root ユーザ...
Linux でパーティションのファイル システム タイプを確認する方法。パーティションのファイル シ...
最近、絵文字にコメントする機能が必要なコメント機能に取り組んでいたため、 contentEditab...
フォーム内のフォーム フィールドが無効に設定されている場合、フォーム フィールドの値は送信されません...
前回のブログでは、Nginx と httpd を使用して、逆生成用のバックエンド Tomcat サー...
1. HttpとHttpsの違いHTTP: インターネットで最も広く使用されているネットワーク プロ...
画面紹介Screen は、コマンドライン端末切り替え用に GNU プロジェクトによって開発されたフリ...
ここでは、通常ヘッダーとフッターに対して行われるインクルード ファイルを使用している可能性があります...
Windows で Nginx を使用するには、Nginx サービスの起動、停止、Nginx のリロ...
Ubuntuの最新バージョンでは、ユーザーは中国語入力方法を別途ダウンロードする必要がなくなりました...
ここ数日ブログを更新していませんでした。簡単な HTML+CSS プロジェクトを終えたところです。数...