最近、コンテナプラットフォームにアプリケーションをデプロイする際に、パッケージング時に docker イメージを生成する必要がありました。最初はインターネットで docker-maven-plugin プラグインを探したのですが、使い方が非常に面倒で、maven と dockerfile で余分な設定をたくさんする必要がありました。その後、公式 Github で作者が新しいプラグイン dockerfile-maven-plugin の使用を推奨していることがわかったので、これに置き換えましたが、このプラグインに関する関連情報はインターネット上にほとんどありません。ここに記録する pom 構成<プラグイン> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-deploy-plugin</artifactId> <構成> <skip>真</skip> </構成> </プラグイン> <!-- Dockerfile Maven プラグイン --> <プラグイン> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <バージョン>1.4.10</バージョン> <処刑> <!--<実行>--> <!--<id>デフォルト</id>--> <!--<目標>--> <!--<!–docker パッケージングを使用しない場合は、このゴールをコメントアウトしてください–>--> <!--<goal>ビルド</goal>--> <!--<goal>プッシュ</goal>--> <!--</目標>--> <!--</実行>--> </処刑> <構成> <リポジトリ>docker-reg.****.com/feedback/${artifactId}-${profiles.active}</リポジトリ> <タグ>${プロジェクト.バージョン}</タグ> <ビルド引数> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </構成> </プラグイン> Setting.xml 構成このファイルは Maven ディレクトリにあり、cd $M2_HOME/conf でアクセスできます。 pluginGroupsにcom.spotifyを追加する <プラグイングループ> <pluginGroup>com.spotify</pluginGroup> </プラグイングループ> ログインステータスログインが必要ですログインの確認方法には多くの落とし穴があります。 HABO で倉庫を非公開に設定する場合は、ログインして次の公式設定に従う必要があります。 <プラグイン> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <バージョン>${バージョン}</バージョン> <構成> <ユーザー名>リポジトリユーザー名</ユーザー名> <password>リポジトリパスワード</password> <リポジトリ>${docker.image.prefix}/${project.artifactId}</リポジトリ> <ビルド引数> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </構成> </プラグイン> ログインは必要ありませんしかし、私はhaborからイメージを自動取得するようにk8sを設定していたため、publicに設定しました。この場合、ログインする必要はありませんが、実行に失敗することがあります。このとき、~/.docker/config.jsonにあるこのウェブサイトの設定を削除する必要があります。 ~/.docker/config.json を編集します。 { 「認証」: { "192.168.87.110:5000": { 「認証」: 「YWRtaW46JKDtaW4xMjM=" }(ここで削除) }, "HttpHeaders": { 「ユーザーエージェント」: 「Docker-Client/18.09.0 (linux)」 } } これが空であることを確認した後もエラーが報告される場合は、docker login ... を再度実行すると成功します。 Maven マルチモジュール構成複数のモジュールの場合、パッケージング プラグインはアプリケーション サブモジュールに配置する必要があります。ルート pom に配置すると、パッケージ化は失敗します。 以下の状況:
この場合は2つのステップに分けることができます 最初のステップは、ルートディレクトリにあるすべてのモジュールをパッケージ化することです。 mvn クリーンパッケージ -P テスト 2番目のステップは、サブモジュールでデプロイコマンドを実行してイメージをパッケージ化することです。 mvn dockerfile:ビルド dockerfile:プッシュ このようにして、サブモジュールをミラーに正常にパッケージ化してプッシュすることができます。 ジェンキンスローカルでテストした後、このプロセスを Jenkins に移動し、いくつかの構成を行う必要があります。 Jenkins サーバーに Docker をインストールするここでは詳細には触れません。Maven の setting.xml およびその他の構成はローカルのものと同じです。 Jenkinsプロジェクト構成を変更するこの時点では、プロジェクトを 2 回パッケージ化する必要があるため (1 回はルート ディレクトリに、2 回目はミラーとしてサブディレクトリに)、mvn コマンドを 2 回実行する必要があります。これは以前とは異なり、最初の実行では引き続き Jenkins Build モジュールが使用されます。 2回目の実行はポストステップに配置され、コマンドによって実行されます。 cd サブモジュールディレクトリ mvn clean package -P $env dockerfile:build dockerfile:push このようにして、パッケージ化と画像作成の手順を完了できます。 dockerfile-maven-plugin の使い方ガイドはこれで終了です。dockerfile-maven-plugin の使い方についてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 長いデータを HTML で表示するときに処理する方法
>>: JavaScript strictモードの概要 strictを使用する
ただし、デフォルトの src を持つ <img> 要素を使用してスクロール読み込み効果を...
CSS3変数について変数を宣言するときは、変数名の前に 2 つのハイフン ( -- ) を追加します...
「私たちは次の一連のモバイル製品を HTML5 で作成しています。」 「ええ、最近は多くの人が Ap...
目次1. コンポーネントの肥大化2. 状態を直接変更する3. プロパティは数値を渡す必要があるが文字...
序文:データベースパラダイムについてはよく耳にしていましたが、詳細まで理解したことはありませんでした...
序文一般的な方法はここには記載されていませんが、等しいかどうかを判断するための二重ループや、比較のた...
まず、/etc/group ファイルを確認します。 [root@localhost /]# cat ...
最初は速度の問題だと思ったので、その後、すべての画像リンク リクエストをクロスサイト接続ではなくサイ...
1. 公式サイトからmysql-8.0.17-winx64をダウンロードし、Zipファイル形式を選択...
この記事では、MySQL 8.0のダウンロードとインストールについてご紹介します。具体的な内容は以下...
Docker はコンテナを作成するときに、デフォルトでブリッジ ネットワークを使用し、IP アドレス...
IE は開発の初期段階では頭を悩ませましたが、他のブラウザとは異なります。他のブラウザがサポートして...
MySQLマスタースレーブを設定した後、スレーブの状態が正常かどうかわからないことが多く、例外が発生...
目次Vue での this.$set の使用使用なぜレスポンシブなのか?分析する要約するVue での...
水平スクロールはあらゆる状況に適しているわけではありませんが、適切に行えば、Web サイトを他のサイ...