docker-maven-plugin の詳細な使用方法

docker-maven-plugin の詳細な使用方法

Docker-Maven-プラグイン

マイクロサービスをデプロイする方法は 2 つあります。

  • 手動デプロイ: まず、ソース コードのパッケージ化に基づいて jar パッケージ (または war パッケージ) を生成し、Dockerfile ファイルを記述し、ベース イメージに基づいて新しいイメージを作成し、jar パッケージ (または war パッケージ) を仮想マシンにアップロードして、JDK コンテナーにコピーします。 (面倒すぎる)
  • Maven プラグインによる自動デプロイメント。 これは実際の企業開発でもよく使われる手法です。

Mavenプラグインの自動デプロイメント手順

冒頭に書いたように、この方法には抜け穴があり、ハッカーによってマイニングマシンイメージにリモートから簡単に挿入できます。使用時には注意してください。2375が開かれ、IP制限が課されていない場合は、マイニングに引き込まれます。 。 。 CA暗号化ポートの使用をお勧めします

1. ホストマシンのDocker設定を変更し、ポート2375を開いてリモートアクセスを許可します。

Maven コマンドをローカルで実行することは、ホスト マシンに対するリモート操作です。Docker のリモート操作はデフォルトで閉じられています。まずポート 2375 を開きます。

まず、ホストマシン上でコマンドを実行し、構成ファイルを変更します(centos 7)

vi /lib/systemd/system/docker.service

ExecStart= ‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sockの後に構成を追加します。

実行開始=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \

unix://var/run/docker.sock : unix ソケット。ローカル クライアントはこれを使用して Docker デーモンに接続します。

tcp://0.0.0.0:2375 : TCP ソケット。これは、すべてのリモート クライアントがポート 2375 を介して Docker デーモンに接続できることを意味します。

なる


Centos7の場合は以下を変更します

実行開始=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

2. 設定を更新してサービスを再起動する

systemctl daemon-reload //Dockerデーモンスレッドをロード systemctl restart docker //Dockerを再起動

3. コンテナファイアウォールを構成する

ポート2375が開かれていても、外部からはアクセスできず、内部からのみアクセスできます。ファイアウォールを設定する必要があります。 Alibaba Cloudが設定されていない場合は、マイニングに引き込まれる可能性があるので注意してください-_-、これは私の学校のサーバーなので、アクセスするにはVPNが必要ですが、問題ありません

これは閉鎖されています。

systemctl stop firewalldコマンドを使用する(ファイアウォールをオフにする)
systemctl enable firewalld (ファイアウォールを無効にすると、起動時に起動しなくなります)

selinuxをオフにする

vi /etc/selinux/config で、SELINUX=enforcing を disabled に変更します。

ここに画像の説明を挿入

再起動が完了したら、ファイアウォールとSELinuxのステータスを確認します。

systemctl status firewalld (ファイアウォールの状態を確認する)
secon (selinux ステータスの確認) 

ここに画像の説明を挿入

Alibaba Cloudはセキュリティの呪いを設定することを推奨しています

この時点でdockerに接続して成功しました

4. pom.xmlに設定を追加する

Dockerfile次の構成で自動的に生成されます。

<ビルド>
        <finalName>テストDocker</finalName>
        <プラグイン>

            <プラグイン>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </プラグイン>

            <!--docker maven プラグイン-->
            <プラグイン>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <バージョン>1.1.0</バージョン>
                <!--構成セクション-->
                <構成>
                    <!--imageName ノードの内容をプライベート ウェアハウスのアドレスとポート、およびイメージ ID と TAG に変更し、プライベート サーバーに直接転送します -->
                    <!-- 最終的に生成されるイメージ名を設定します。Docker イメージでは、プロジェクト名: バージョンを使用します -->
                    <画像名>172.19.240.208:5000/${プロジェクト.アーティファクトId}:${プロジェクト.バージョン}}</画像名>
                    <!-- ベースイメージ、Dockerfile の from--> に相当
                    <baseImage>ascdc/jdk8</baseImage>
                    <!--エントリ ポイント、project.build.finalName は、プロジェクト タグ、testDocker の下のビルド タグの下のファイル名タグの内容です-->
                    <!-- コンテナを起動するのと同等に、java-jar/testDocker.jar が自動的に実行されます -->
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <!--docker プライベート ウェアハウスにプッシュするかどうか-->
                    <pushImage>真</pushImage>
                    <レジストリ URL>172.19.240.208:5000</レジストリ URL>

                    <リソース>
                        <リソース>
                            <ターゲットパス>/</ターゲットパス>
                            <ディレクトリ>${project.build.directory}</ディレクトリ>
                            <!--Docker にアップロードされるファイル。Dockerfile に testDocker.jar を追加するのと同等です /-->
                            <include>${project.build.finalName}.jar</include>
                        </リソース>
                    </リソース>
                    <dockerホスト>http://172.19.240.208:2375</dockerホスト>
                </構成>
            </プラグイン>
        </プラグイン>
    </ビルド>

プライベートリポジトリにプッシュするには3つのポイントがあり、コンテナが開始状態にあることが前提であることに注意してください。

<!-- 1. registryUrl ノードを追加します。内容はプライベート ウェアハウスのアドレスとポートです (ここではポート 5000 を設定しました) -->
<registryUrl>あなたのIP:5000</registryUrl>

<!-- 2. pushImage ノードを追加する-->
<pushImage>真</pushImage>

<!-- 3. imageName ノードの内容をプライベート ウェアハウスのアドレスとポートに変更し、イメージ ID と TAG を追加します。ウェアハウス内の名前はプロジェクト名: version になります -->
<imageName>yourip:5000/${project.artifactId}:${project.version} </imageName>

まず、mvn clean と mvn install を実行し、ローカル リポジトリに配置します。

[外部リンク画像の転送に失敗しました。ソースサイトにはアンチホットリンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-84l0HMwJ-1579593153706)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200120214402887.jpg)]

次に、 mvn docker:buildコマンドを実行してイメージを作成します。アップロードする場合は、 -DpushImageパラメータを追加します。

[外部リンク画像の転送に失敗しました。ソースサイトにはアンチホットリンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-wdYBT027-1579593153707)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200120214544482.jpg)]

実行中にエラーが発生しました

[エラー] プロジェクト demo で目標 com.spotify:docker-maven-plugin:1.1.0:build (default-cli) を実行できませんでした:
例外が発生しました: jdk1.8 のプル アクセスが拒否されました。リポジトリが存在しないか、'docker login' が必要になる可能性があります:
拒否: リソースへの要求されたアクセスが拒否されました -> [ヘルプ 1]

Baidu で確認したところ、ログインが必要だという人がたくさんいました。実際、ログインする必要はなく、リポジトリも存在しません。実際、私の docker には jdk1.8 イメージ ファイルがなく、自分でダウンロードする必要があります。docker search jdk8 でプルするか、tar パッケージを自分でアップロードしてから Dockerfile で作成することができます。私は直接1つを引いた

ここに画像の説明を挿入

docker images

ここに画像の説明を挿入

プロジェクト内のベースイメージ名を変更する

ここに画像の説明を挿入

ビルドとプッシュに成功しました

ここに画像の説明を挿入

[外部リンク画像の転送に失敗しました。ソースサイトにはアンチホットリンクメカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-SAUhrnA3-1579593153710)(/Users/zhangye/Library/Application Support/typora-user-images/image-20200121154702289.jpg)]

ここに画像の説明を挿入

ミラーを見る

ここに画像の説明を挿入

倉庫を見る

ここに画像の説明を挿入

docker-maven-plugin の詳しい使い方については以上です。docker-maven-plugin の使い方についてさらに詳しく知りたい方は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  幅の比率に応じて高さを変えるCSSを実装するいくつかの方法

>>:  MySQL データベース シェル import_table データ インポート

推薦する

mysql: [エラー] 不明なオプション '--skip-grant-tables'

MySQL データベースがエラー 1045 (28000): ユーザー 'ODBC'...

JavaScriptで配列を作成する方法の詳細な説明

目次JavaScript で配列を作成する配列の使用配列を分割文字列に変換する配列に要素を追加する配...

Vue のミックスインの使用方法の詳細な説明

目次序文1. Mixin とは何ですか? 2. Mixin はいつ使用すればよいですか? 3. Mi...

Windows Server 2008 64ビット MySQL5.6 インストール不要版 設定方法図

1 公式ウェブサイトから MySQL 5.6 バージョンの圧縮パッケージmysql-5.6.36-w...

MySQL インポート csv エラーの 4 つの解決策

これは今日私が踏んだ4つの落とし穴を記念したものです...落とし穴1:地元のせいエラー:エラー 39...

mysql 8.0.12 winx64 のダウンロードとインストールのチュートリアル

MySQL 8.0.12のダウンロードとインストールのチュートリアルは参考までに、具体的な内容は次の...

div を下から上にスライドさせる CSS3 の例

1. まず、CSS3 のターゲット セレクターを使用し、a タグを使用して id セレクターを指定し...

Linux で MySQL データベースのデータ ファイル パスを変更する手順

rpm インストール方法を使用して MySQL データベースをインストールした後、データ ファイルの...

JavaScript オブジェクトの組み込みオブジェクト、値型、参照型の説明

目次物体オブジェクト定義オブジェクトのメンバーを反復処理するJS組み込みオブジェクト数学オブジェクト...

HTML と CSS を書くための 6 つの最も効果的な方法

この記事では、効率を向上させ、時間を節約することを願って、最も効果的な 6 つの方法を紹介します。 ...

Alibaba Cloud CentOS 7 に MySQL 8.0.13 をインストールする方法

1. MySQL インストール パッケージをダウンロードします(ここにはコツがあります。おそらく、こ...

Ubuntu Server 16.04 MySQL 8.0 のインストールと設定のグラフィックチュートリアル

Ubuntu Server 16.04 MySQL 8.0 のインストールと設定のグラフィックチュー...

CSS 不透明度子要素が親要素の透明度を継承するためのソリューションの詳細な説明

プロジェクト ページの作成中に、子要素が親要素の透明度を継承するという問題に遭遇しました。多くのドキ...

Nginx設定の原理と実装プロセスの詳細な説明https

Linuxユーティリティcertbotを使用してhttps証明書を生成するこのツールは Let&#...

base target="" はリンクのターゲットオープンフレームを制御します

<base target=_blank> は、基本リンクのターゲット フレームを新しいペ...