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リクエストデータを記録します。

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

推薦する

Linux の fsevents モジュールによって発生する npm ls エラーの解決方法の詳細な説明

Mac で開発されたプロジェクトがあり、パッケージ npm i がインストールされており、すべて正常...

Ubuntuがインターネットに接続できない場合の解決策

問題の説明:デスクトップ コンピューターとキャンパス ネットワークを使用して、有線モードでインターネ...

Docker Consul コンテナ サービスの更新と見つかった問題の概要

目次1. コンテナサービスの更新とDockerコンサルの検出1. サービス登録と検出とは何ですか? ...

Centos8.2 クラウド サーバー環境に Tomcat8.5 をインストールするための詳細なチュートリアル

Tomcatをインストールする前に、まずJDK環境をインストールしてくださいLinux サーバー上で...

Linux でパスワードを入力せずに sudo コマンドを実行する方法

sudo コマンドを使用すると、信頼できるユーザーは別のユーザー (デフォルトでは root ユーザ...

Linux のファイル システム タイプの表示方法の例

Linux でパーティションのファイル システム タイプを確認する方法。パーティションのファイル シ...

div が contentEditable=true に設定されている場合、コンテンツをリセットした後にカーソルを配置することはできません。

最近、絵文字にコメントする機能が必要なコメント機能に取り組んでいたため、 contentEditab...

フォーム内の無効なフォームフィールドの値を送信する方法 サンプルコード

フォーム内のフォーム フィールドが無効に設定されている場合、フォーム フィールドの値は送信されません...

Nginx/Httpd ロードバランシング Tomcat 設定チュートリアル

前回のブログでは、Nginx と httpd を使用して、逆生成用のバックエンド Tomcat サー...

Nginx で HTTPS 証明書を構成する詳細なプロセス

1. HttpとHttpsの違いHTTP: インターネットで最も広く使用されているネットワーク プロ...

Linux のスクリーンコマンドとその使い方

画面紹介Screen は、コマンドライン端末切り替え用に GNU プロジェクトによって開発されたフリ...

Unicode署名BOMによる事故原因の分析

ここでは、通常ヘッダーとフッターに対して行われるインクルード ファイルを使用している可能性があります...

WindowsでのNginxの起動や停止などの基本操作コマンドの詳しい説明

Windows で Nginx を使用するには、Nginx サービスの起動、停止、Nginx のリロ...

Ubuntu 18.04 で中国語入力方法を設定する方法

Ubuntuの最新バージョンでは、ユーザーは中国語入力方法を別途ダウンロードする必要がなくなりました...

HTML+CSSプロジェクト開発経験概要(推奨)

ここ数日ブログを更新していませんでした。簡単な HTML+CSS プロジェクトを終えたところです。数...