Spring Boot プロジェクトでは、Docker コンテナ、jar、war の階層化パッケージを使用します。 Spring Boot は、階層化パッケージング技術をサポートするようになりました。これを使用して、Docker パッケージングを高速化し、非常に迅速にビルドしてみましょう。 レイヤー設定まず、pom で同様の設定を行う必要があります。 <プラグイン> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <バージョン>${spring-boot.version}</バージョン> <構成> <!-- 階層化パッケージのサポートを有効にする --> <レイヤー> <enabled>有効</enabled> </レイヤー> </構成> <処刑> <実行> <目標> <goal>再パッケージ化</goal> </目標> </実行> </処刑> </プラグイン>
パッケージ化後、jar パッケージまたは war パッケージをチェックして、階層化されたファイルのリストを含む追加のlayers.idx ファイルを見つけます。 - 「依存関係」: - "WEB-INF/lib-provided/" - "WEB-INF/lib/HikariCP-4.0.3.jar" - "WEB-INF/lib/aspectjweaver-1.9.5.jar" ... ... - 「スプリングブートローダー」: - 「org/」 - 「スナップショットの依存関係」: - "WEB-INF/lib/ms-fundmain-base-1.0-SNAPSHOT.jar" - "WEB-INF/lib/xpower-main-1.0.3-SNAPSHOT.jar" - "WEB-INF/lib/xpower-utils-1.0.3-SNAPSHOT.jar" - "応用": - 「META-INF/」 - "WEB-INF/classes/" - 「WEB-INF/jetty-web.xml」 - 「WEB-INF/layers.idx」 - 「ページ/」 - 「静的/」 このファイルは、次の階層化設定の基礎となります。 jar の場合は、依存するすべての jar パッケージをリストする パッケージ化する場合は、docker build または 注: spring-boot-maven-plugin Docker パッケージング機能がありますが、ダウンロードとパッケージングの速度が遅すぎて、非常に感動的なので、ここではお勧めしません。 --- 利点は、Dockerfile を書く必要がないため、シンプルで便利です。欠点は、Docker ファイルをカスタマイズできないことです。 <プラグイン> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <構成> <画像> <!--イメージ名の設定--> <名前>127.0.0.1:5000/springcnscud/${プロジェクト名}:${プロジェクトバージョン}}</名前> <!-- イメージがパッケージ化された後、自動的にイメージ ウェアハウスにプッシュされます --> <publish> 真</publish> </画像> <ドッカー> <!--Docker リモート管理アドレス--> <ホスト>http://127.0.0.1:2375</ホスト> <!-- TLS なしでアクセス --> <tlsVerify> 偽</tlsVerify> <!-- Docker プッシュ イメージ リポジトリ構成 --> <レジストリを公開> <!--ミラーリポジトリのユーザー名をプッシュ--> <ユーザー名>cnscud</ユーザー名> <!--イメージリポジトリのパスワードをプッシュ--> <パスワード>123456</パスワード> <!--ミラーリポジトリのアドレスをプッシュ--> <url>http://127.0.0.1:5000</url> </レジストリを公開> </ドッカー> </構成> </プラグイン> docker-maven-plugin + カスタム Dockerfile を使用する場合:pom 構成: <プラグイン> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <バージョン>${docker.plugin.version}</バージョン> <構成> <!-- Docker リモート API --> <!-- このマシンは、ポート 2375 をリッスンしていない場合はコメント アウトできます --> <dockerホスト>${docker.host}</dockerホスト> <!-- Docker イメージ プライベート サーバー --> <レジストリ>${docker.registry}</レジストリ> <画像> <画像> <名前>${docker.registry}/${docker.namespace}/${プロジェクト名}:${プロジェクトバージョン}}</名前> <ビルド> <dockerFileDir>${project.basedir}</dockerFileDir> </ビルド> </画像> </画像> </構成> </プラグイン> Spring Boot の jar モードでの Dockerfile 形式を見てみましょう。# 階層化構築、加速された増分構築 FROM adoptopenjdk/openjdk8:centos-slim as builder WORKDIR アプリケーション ARG JAR_FILE=ターゲット/*.jar ${JAR_FILE} app.jar をコピーする 実行 java -Djarmode=layertools -jar app.jar extract && rm app.jar adoptopenjdk/openjdk8:centos-slim より ラベル メンテナー="[email protected]" ENV TZ=アジア/上海 実行 ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 環境変数 JAVA_OPTS="-Xms128m -Xmx256m" WORKDIR アプリケーション コピー --from=builder /application/dependencies/ ./ コピー --from=builder /application/snapshot-dependencies/ ./ コピー --from=builder /application/spring-boot-loader/ ./ コピー --from=builder /application/application/ ./ エクスポーズ9001 ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS org.springframework.boot.loader.JarLauncher"] ご自身の状況に合わせてjdkを修正し、jarにはJarLauncherをご利用ください。 戦争だとしたら、どうやって設定するのでしょうか?まず、独立して実行したい場合は、組み込みのTomcatまたはJettyを使用し、pomにプロバイダーを設定しないでください。 <依存関係> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </依存関係> この方法では、パッケージ化時に埋め込まれた Tomcat が含まれます。 Dockerfile は次のように設定されています。 # 階層化構築、加速された増分構築 FROM adoptopenjdk/openjdk8:centos-slim as builder WORKDIR アプリケーション ARG JAR_FILE=ターゲット/*.war ${JAR_FILE} app.war をコピーする 実行 java -Djarmode=layertools -jar app.war extract && rm app.war adoptopenjdk/openjdk8:centos-slim より ラベル メンテナー="[email protected]" ENV TZ=アジア/上海 実行 ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 環境変数 JAVA_OPTS="-Xms128m -Xmx256m" WORKDIR アプリケーション コピー --from=builder /application/dependencies/ ./ コピー --from=builder /application/snapshot-dependencies/ ./ コピー --from=builder /application/spring-boot-loader/ ./ コピー --from=builder /application/application/ ./ エクスポーズ8000 ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS org.springframework.boot.loader.WarLauncher"] ファイル名をメモし、WarLauncher を使用して実行します。 外部Tomcatの使用実験なしでは、レイヤーの構築は面倒な場合があります...しかし、理論的には、Tomcat自体に解凍させるのではなく、解凍されたwarパッケージを使用することもできます。 ここでは試しません。要点は、ベースパッケージを tomcat に変更し、実行中の ENTRYPOINT を tomcat に変更し、中間のコンテナにファイルをコピーすることです。 tomcat:9.0から #target の下の xx.war ファイルを /usr/local/tomcat/webapps/ にコピーします。ADD ./target/xx.war /usr/local/tomcat/webapps/ #EXPOSE ポート 8080 #起動コマンドENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh","run"] を設定します Docker レイヤード パッケージングを使用した Spring Boot に関するこの記事はこれで終わりです。Docker レイヤード パッケージングに関するその他の関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: CSS3 で less のテキストの長い影を実装する
職業的な観点からも、人生の観点からも、良い再建をすることは本当に簡単ではありません。楽観的で熱心で前...
最近ファイルシステムを作ったのですが、フィールドが多すぎることに気づきましたページングを使用した複数...
前提条件: Dockerはすでにインストールされています1. 画像を見つける(方法は2つあります) ...
MySQL 5.7.20のインストールと設定方法のグラフィックチュートリアルをあなたと共有します1...
これまでの記事はすべて私自身の学習記録であり、主に以前に遭遇した落とし穴を忘れないようにするためのも...
背景開発やデバッグには Chrome Dev Tools がよく使用されますが、ページのパフォーマン...
3G の普及により、携帯電話を使ってインターネットにアクセスする人が増えています。モバイル デバイ...
フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...
導入Docker コミュニティは、さまざまなユースケースを処理するのに役立つ多くのオープンソース ツ...
目次序文導入ライブ使いやすいルートスコープマウント要素の指定ライフサイクルコンポーネントグローバル状...
MySQL サーバーをシャットダウンする場合、シャットダウン方法に応じてさまざまな問題が発生する可能...
目次1. 基本的な使い方2. 画像量の制御3. 画像形式の制限/複数の画像を選択可能補足: vueプ...
テーブルデータを作成する テーブル `praise_info` を作成します ( `id` bigi...
Reactのdiffアルゴリズムの理解diffアルゴリズムは、 Virtual DOMの変更された部...
MIME タイプとは何ですか? 1. まず、ブラウザがコンテンツを処理する方法を理解する必要がありま...