dockerfile-maven-plugin 使用ガイドの概要

dockerfile-maven-plugin 使用ガイドの概要

最近、コンテナプラットフォームにアプリケーションをデプロイする際に、パッケージング時に 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>-->
                        <!--<目標>-->
                            <!--&lt;!&ndash;docker パッケージングを使用しない場合は、このゴールをコメントアウトしてください&ndash;&gt;-->
                            <!--<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 に配置すると、パッケージ化は失敗します。

以下の状況:

  • -アプリ
  • -一般
  • -ファイル
  • -郵便
  • -応用
  • ​ -pom.xml

この場合は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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • docker-maven-pluginプラグインは対応するjarパッケージを取得できません
  • docker-maven-plugin の詳細な使用方法
  • Maven プラグイン docker-maven-plugin の使用
  • dockerfile-maven-plugin ミニマリスト チュートリアル (推奨)
  • docker-maven-pluginを使用してデプロイメントを自動化する方法を説明します

<<:  長いデータを HTML で表示するときに処理する方法

>>:  JavaScript strictモードの概要 strictを使用する

推薦する

CSS ワールド - コード実践: 画像の Alt 情報の表示

ただし、デフォルトの src を持つ <img> 要素を使用してスクロール読み込み効果を...

プロジェクトの再構築からプロジェクトにおける CSS3 カスタム変数の使用について話す

CSS3変数について変数を宣言するときは、変数名の前に 2 つのハイフン ( -- ) を追加します...

モバイル開発におけるHTML5開発の現状を深く理解する

「私たちは次の一連のモバイル製品を HTML5 で作成しています。」 「ええ、最近は多くの人が Ap...

Reactを使用する際の7つの落とし穴のまとめ

目次1. コンポーネントの肥大化2. 状態を直接変更する3. プロパティは数値を渡す必要があるが文字...

MySQLデータベースパラダイムの詳細な説明

序文:データベースパラダイムについてはよく耳にしていましたが、詳細まで理解したことはありませんでした...

JS 配列の重複を排除する 9 つの高度な方法 (実証済みで効果的)

序文一般的な方法はここには記載されていませんが、等しいかどうかを判断するための二重ループや、比較のた...

Linux における効果的なユーザー グループと初期ユーザー グループの実装

まず、/etc/group ファイルを確認します。 [root@localhost /]# cat ...

div 要素に終了タグがないため、Web ページを開くことができません

最初は速度の問題だと思ったので、その後、すべての画像リンク リクエストをクロスサイト接続ではなくサイ...

mysql-8.0.17-winx64 のデプロイメント方法

1. 公式サイトからmysql-8.0.17-winx64をダウンロードし、Zipファイル形式を選択...

Windows 10 での MySQL 8.0 のダウンロードとインストール構成のグラフィック チュートリアル

この記事では、MySQL 8.0のダウンロードとインストールについてご紹介します。具体的な内容は以下...

Dockerでコンテナを作成するときにコンテナIPを指定する実装例

Docker はコンテナを作成するときに、デフォルトでブリッジ ネットワークを使用し、IP アドレス...

つまり、フィルターコレクション

IE は開発の初期段階では頭を悩ませましたが、他のブラウザとは異なります。他のブラウザがサポートして...

Zabbix が MySQL のマスター/スレーブ状態を監視する方法の詳細な説明

MySQLマスタースレーブを設定した後、スレーブの状態が正常かどうかわからないことが多く、例外が発生...

Vue での this.$set の使用に関する詳細な説明

目次Vue での this.$set の使用使用なぜレスポンシブなのか?分析する要約するVue での...

横スクロールウェブサイトデザインの概要

水平スクロールはあらゆる状況に適しているわけではありませんが、適切に行えば、Web サイトを他のサイ...