Spring Boot 2.4 の新機能、ワンクリックビルド、Docker イメージプロセスの詳細説明

Spring Boot 2.4 の新機能、ワンクリックビルド、Docker イメージプロセスの詳細説明

背景

開発プロセス中に 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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 春物の伝播特性の詳細な説明
  • Spring Boot 2.4 の新機能によりメモリ使用量が 95% 削減
  • Spring 5の新機能の包括的な紹介
  • SpringBoot の新機能、グローバル遅延読み込みメカニズム
  • Spring Security フィルタチェーンのメカニズムと特性の包括的な分析
  • SpringBoot2.3の新機能「エレガントなシャットダウン」の詳しい説明
  • Spring MVCはフォームの自動カプセル化機能インスタンス分析を受け入れます
  • SpringBoot2.0 の新機能構成バインディングの完全分析
  • Springの各バージョンの新機能の紹介
  • Intellij IDEA 2017 の Spring Boot 関連機能の紹介
  • Spring Framework 5.0 の新機能の簡単な紹介
  • Spring4 の新機能 Web 開発の強化
  • Spring 4 の新機能の概要の簡単な分析
  • Spring 4 でサポートされる Java 8 の機能
  • Java Spring 5 の新機能、機能的な Web フレームワークの詳細な紹介
  • Springファクトリー機能の詳細な説明

<<:  mysqlを使用して、URLから返されたhttp GETリクエストデータを記録します。

>>:  ハイパーリンクを開くターゲットのテスト

推薦する

JavaScriptプロトタイプチェーン図のまとめと実践

目次プロトタイプチェーンプロトタイプチェーンに基づいてシンプルなJQueryライブラリを実装すること...

Win2008 R2 mysql 5.5 zip 形式 mysql のインストールと設定

Win2008 R2 zip形式のMySQLのインストールと設定1. Baidu MySQL 5.6...

vuexの強制リフレッシュによるデータ損失問題の分析

vuex 永続状態基本原則: すべての vuex データをローカルストレージに保存し、ページが更新さ...

ビジュアルデザインとインタラクションデザインについて

<br />製品設計プロセス全体において、ビジュアルデザインとインタラクションデザインの...

SQL 集計、グループ化、並べ替え

目次1. 集計クエリ1. COUNT関数2. SUM関数3. AVG関数4. MAX関数とMIN関数...

Linux カーネル デバイス ドライバー カーネル時間管理に関する注意事項

/****************** * Linux カーネルの時間管理 ***********...

Tencent Cloud Server での Jenkins の設定方法の詳細

目次1. Tencent Cloud Serverに接続する2. 環境整備Jenkinsのデプロイメ...

JSはタイムラインの自動再生を実現する

最近、次のような効果を実装しました。再生ボタンをクリックするとタイムラインの再生が開始され、一時停止...

MySQLのダウンロードとインストールのプロセスの詳細な説明

1: MySqlをダウンロードする公式サイトのダウンロードアドレス: https://dev.mys...

Navicat for MySQL チュートリアル

まず、Navicat for MySQL をダウンロードしてインストールする必要があります。正規版の...

ReactにおけるRefの相互利用の詳細な説明

目次1. まずRefとは何かを説明しましょう2. フックでのrefの使用1. HTMLDomフックで...

条件によるMysqlカウントの複数の実装方法を詳細に解説

最近、あるウェブサイトのバックエンドに一連の統計機能を追加していたのですが、条件によるカウントが必要...

MySQL構成SSL証明書ログインの実装

目次序文1. MySQLはSSL構成を有効にする1.1 SSLが有効になっているかどうかを確認する1...

Vue フィルターの実装と適用シナリオの詳細な説明

1. 簡単な紹介Vue.js を使用すると、一般的なテキストの書式設定に使用できる独自のフィルターを...