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 データ インポート

推薦する

仮想マシンの複製に関するVirtual Boxチュートリアル図

VMに慣れた後、BOXに切り替えるのは少し異なります。たとえば、コピーネットワークカードを2枚使って...

ウェブサイトデザインの基礎知識:初心者の方はぜひお読みください

今では多くの人がウェブサイト作成に参加していますが、ウェブサイトはどのように作成すればよいのでしょう...

Win7 64 ビット版に MySQL 5.7 をダウンロードしてインストールする際によくある問題の概要

1. 公式ウェブサイトからMySQLをダウンロードします。 これが私たちが探しているものです、win...

Centos7 ベースの Nginx Web サイト サーバーの構築の詳細説明 (仮想 Web ホストの構成を含む)

1. Nginx サービス基盤Nginx (エンジン x) は、パフォーマンスの最適化のために特別...

HTMLにスクリプトを追加する2つの方法と注意点

HTML に <script> スクリプトを追加する方法: 1. HTMLにJavaSc...

Reactでカスタムフックを作成する方法を教えます

1. カスタムフックとは何かロジックの再利用簡単に言えば、カスタム フックを使用すると、特定のコンポ...

ウェブデザインに必須のツール: Firefox Web Developer プラグイン CSS ツールセットのチュートリアル

プラグインは Firefox ブラウザにインストールされます。 Web Developer プラグイ...

MySQL ベストプラクティス: パーティションテーブルの基本タイプ

MySQL パーティションテーブルの概要MySQL の人気が高まるにつれて、MySQL に保存される...

Docker Compose のインストールと使用手順

目次1. Docker Compose とは何ですか? 2. Docker Composeのインスト...

JavaScript のカンマ式が含まれている場合について

JavaScript の if ステートメントで英語のカンマ「,」が表示されることがあります。これは...

Linux ディスク パーティションの実装の原理と方法の分析

覚えて: IDE ディスク: 最初のディスクは hda、2 番目のディスクは hdb...最初のディ...

Centos7 システム上の nginx サーバーで Phalcon 環境を構築する方法の詳細な説明

この記事では、centos7 システムの nginx サーバーの下に phalcon 環境を構築する...

Vue で 3D タグ クラウドを実装するための詳細なコード

プレビュー: コード:ページセクション: <テンプレート> <div class=...

Ubuntu の Python で C/C++ メソッドを呼び出すダイナミック リンク ライブラリの詳細な説明

ブーストをインストールPython から C/C++ を呼び出す方法はたくさんあります。この記事では...

win10環境でDockerをインストールする実装

1. Docker公式サイトにアクセスするまず、Dockerの公式ウェブサイトにアクセスして、最新の...