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を使用する

推薦する

nginxワーカープロセスループの実装

ワーカープロセスは、起動されると、まず自身の動作に必要な環境を初期化し、次に実行する必要があるイベン...

サーバー上で selenium+chromedriver を実行するための詳細なチュートリアル

1. はじめにSelenium を使用して Web サイトからデータをスクレイピングしたいのですが、...

Windows7 での Mysql5.7 my.ini ファイルの読み込みパスとデータの場所の変更方法

更新: MySQL の公式 Web サイトにアクセスして MySQL インストーラーをインストールし...

Vue-routerルーティングの使い方

目次1. 説明2. インストール3. テスト1. 説明Vue Router は、Vue.js の公式...

複数の値を返す MySQL ストアド プロシージャ メソッドの例

この記事では、例を使用して、MySQL ストアド プロシージャで複数の値を返す方法について説明します...

Linux での MySQL 5.7.19 のインストールに関する問題の概要

初めて仮想マシンに MySQL をインストールしたとき、多くの問題が発生しました。ここでそれらを書き...

この記事は、JQueryの基本的な操作を理解し、始めるのに役立ちます。

目次1. Jquery を使用する手順: (1)jsライブラリをインポートする(2)ページ読み込みイ...

MySQLで置換関数を実装するためのいくつかの実用的なシナリオ

REPLACE構文REPLACE(String,from_str,to_str)つまり、String...

Visual Studio Codeを使用してMySqlデータベースに接続し、クエリを実行します。

Visual Studio Code は、Microsoft が開発した強力なテキスト エディター...

HTML5 と HTML4 の 10 の主な違い

HTML5 は HTML 標準の次のバージョンです。ますます多くのプログラマーが、Web サイトの構...

CentOS 7 で yum を使用して MySQL 5.7.20 をインストールする最も簡単な方法

CentOS7 のデフォルトのデータベースは mariadb ですが、mysql を使っている人も多...

MySQLのよくある間違い

NULL 値によると、MySQL の NULL 値は単にデータがないことを意味します。NULL 値は...

MySQL学習エンジンの詳細な説明、説明、権限

エンジン導入InnodbエンジンInnodb エンジンは、データベース ACID トランザクションを...