背景 開発プロセス中に 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リクエストデータを記録します。
ダウンロードアドレス: https://dev.mysql.com/downloads/mysql/...
序文: MySQL を使用すると、時間の表示が正しくない、タイムゾーンが GMT+8 ゾーンにない、...
質問: Vue にブログ投稿をアップロードするためのフォームがあり、タイトル、本文、説明、スニペット...
序文:私はずっと、SQL 文がどのように、どのような順序で実行されるのかを知りたいと思っていました。...
テスト サーバーにログインするたびに、必ず ssh ログインのパスワードを入力する必要があります。ロ...
Linuxインスタンスでpipを使用する際のタイムアウト問題を解決する方法pip は最も人気のある ...
isnullの代わりにifnullを使用するisnull は、null かどうかを判断するために使用...
nginx Nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバー...
この記事では、Docker を使用して Centos6 に Zookeeper をデプロイする方法に...
#!/bin/bash #SVNをダウンロード yum -y サブバージョンをインストールします ...
目次1. コンセプト1.1 エラーと例外とは何ですか? 1.2 異常の分類2. 例外処理2.1try...
開発から導入まで自分で行うシングルページアプリケーションを開発する場合、ビルドを実行した後 npm ...
この記事では、WeChatアプレットがSMS認証コードのカウントダウンを送信するための具体的なコード...
プロファイルを使用して遅いSQLを分析するMySQL の SQL パフォーマンス アナライザーの主な...
Async Hooks は Node8 の新機能です。NodeJs の非同期リソースのライフサイクル...