アイデアはDockerプラグインを使用してワンクリックの自動デプロイを実現します

アイデアはDockerプラグインを使用してワンクリックの自動デプロイを実現します

環境:

  • JDK 1.8 以上。
  • Maven 3.2 以上
  • アイデア
  • ドッカー

1. Dockerはリモート接続アクセスを可能にする

まず、Docker へのリモート接続アクセスを有効にする必要があります。 Docker がサーバー上に存在せず、リモートからもアクセスできることを確認します。

Linux 用 Docker:

docker.service ファイルを変更し、リスニング ポート -H tcp://0.0.0.0:2375 を追加します。

: : vi /usr/lib/systemd/system/docker.service を実行します。

下の図に示すように、ExecStartを見つけて、最後に-H tcp://0.0.0.0:2375を追加します。

Dockerを再起動する

 systemctlデーモンリロード
 systemctl ドッカーを起動する

ファイアウォールがある場合は、ファイアウォール ポリシーを追加するか、ファイアウォールをオフにすることを忘れないでください。

Windows 用 Docker

コンピューターの左下隅にある Docker アイコンを見つけて右クリックし、設定を選択します。 [全般] メニューで [TLS なしで tcp://localhost:2375 にデーモンを公開する] をオンにします。再起動は必要ありません。

idea dockerプラグインをインストールして設定する

「ファイル」→「設定」→「プラグイン」の入力ボックスで Docker を検索し、選択してインストールします。インストールが完了したら、Docker を再起動します。

ここに画像の説明を挿入

Dockerの設定

ファイル > 設定 > ビルド、実行、デプロイメントでDockerを見つけます。

新しい docker インスタンスを作成し、エンジン API URL に docker が配置されている IP ポート番号を入力します。下に「接続成功」と表示されたら、docker への接続が成功したことが証明されます。失敗した場合は、前の手順で Docker とのリモート接続を開けなかった可能性があります。

ここに画像の説明を挿入

設定が完了したら、アイデアのメイン インターフェイスに戻ると、ページの下部に Docker ウィンドウが表示されます。緑色の矢印をクリックして Docker に接続します。接続後、表示されるコンテナとイメージは、Docker にすでに存在するコンテナとイメージです。

ここに画像の説明を挿入

プロジェクトを作成して設定する

1. プロジェクトを作成する

簡単な Eureka プロジェクトを使ってデモンストレーションします。

ファイル > 新規 > プロジェクト > Spring Initializr

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

2. 構成プロジェクト

pom.xmlファイルを修正し、docker-maven-pluginプラグインの設定を導入します。<plugins>タグ内の設定を変更します。

 <!--docker-maven-plugin プラグインを使用する-->
    <プラグイン>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <バージョン>1.0.0</バージョン>

        <!-- プラグインを特定のフェーズにバインドして実行します -->
        <処刑>
            <実行>
                <id>ビルドイメージ</id>
                <!-- プラグインをパッケージ フェーズにバインドします。つまり、
                ユーザーは mvn package を実行するだけで、自動的に mvn docker:build が実行されます -->
                <phase>パッケージ</phase>
                <目標>
                    <goal>ビルド</goal>
                </目標>
            </実行>
        </処刑>

        <構成>
            <!-- 生成されたイメージ名を指定します。ここにプロジェクト名があります -->
            <画像名>${プロジェクト.アーティファクトID}</画像名>
            <!--ここでタグを指定してイメージのバージョンを指定します。デフォルトのバージョンは最新です-->
            <画像タグ>
                <imageTag>最新</imageTag>
            </画像タグ>
            <!-- プロジェクト内の Dockerfile ファイルのパスを指定します -->
            <dockerディレクトリ>${project.basedir}/src/main/resources</dockerディレクトリ>

            <!-- リモート Docker アドレスを指定します -->
            <dockerホスト>http://127.0.0.1:2375</dockerホスト>

            <!-- 以下は、jar パッケージを docker コンテナの指定されたディレクトリにコピーするための構成です -->
            <リソース>
                <リソース>
                    <ターゲットパス>/</ターゲットパス>
                    <!--jar パッケージが配置されているパスは、プロジェクト内のターゲット ディレクトリに対応するようにここで構成されます-->
                    <ディレクトリ>${project.build.directory}</ディレクトリ>
                    <!-- Dockerfile に追加されたファイル名に対応する、含める必要のある jar パッケージ -->
                    <include>${project.build.finalName}.jar</include>
                </リソース>
            </リソース>
        </構成>
    </プラグイン>

プロジェクトの基本構成を設定します。 (これは本題ではありません、ちょっとした余談です)

①application.propertiesを修正し、プロジェクト関連情報を追加します。

#プロジェクトが開始されるポート番号とIPアドレス server.port=9090
eureka.instance.hostname=127.0.0.1

# 登録センターに登録するかどうか、クラスタ環境でない場合はfalse
eureka.client.register-with-eureka=false
# サービスを取得するかどうか。単一マシンの場合は false
eureka.client.fetch-registry=false

eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

②プロジェクトのスタートアップクラスを見つけて、@EnableEurekaServerアノテーションを追加します。

@EnableEurekaServer
@SpringBootアプリケーション
パブリッククラス EurekaServerApplication {

    パブリック静的voidメイン(String[] args) {
        SpringApplication.run(EurekaserverApplication.class、引数);
    }

}

Dockerfile ファイルを追加します。

EeurekaServer\src\main\resources ディレクトリに Dockerfile という名前のファイルを追加します。ここに画像の説明を挿入

docker に java:8 イメージがない場合は、まず docker pull java:8 を使用してイメージをプルダウンしてください。

java:8より
ボリューム /tmp
*.jar app.jar を追加します
エクスポーズ9090
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]

Spring Boot アプリケーションがデフォルトで Tomcat の作業ディレクトリを作成する場所が "/tmp" であるため、"/tmp" の内容を指す VOLUME を追加しました。その結果、ホストの「/var/lib/docker」の下に一時ファイルが作成され、「/tmp」の下のコンテナにリンクされます。この手順は、ここで作成する単純なアプリケーションではオプションですが、実際にファイル システムに書き込む必要がある他の Spring Boot アプリケーションでは必要になる場合があります。

Tomcat の起動時間を短縮するために、エントロピー ソースとして "/dev/urandom" を指すシステム プロパティを追加しました。 Tomcat (またはその他の Web サーバー) の「標準」バージョンを使用する場合は、Spring Boot の新しいバージョンは必要ありません。

Maven パッケージング、イメージの生成

Maven を使用してパッケージ化します。 pom.xml で設定しました。Maven パッケージを使用すると、ビルドに Dockerfile ファイルが自動的に使用されます。

ここに画像の説明を挿入

コンソールから、プロジェクトと同じ名前のイメージ ファイルが作成されていることがわかります。

ここに画像の説明を挿入

Docker ウィンドウを見ると、イメージ ライブラリにもう 1 つの eurekaserver:latest イメージがあることがわかります。

ここに画像の説明を挿入

コンテナを作成し、プロジェクトをDockerにデプロイする

Docker ウィンドウで、先ほど作成したイメージ ファイルを見つけて右クリックし、[コンテナーの作成] を選択します。コンテナーを作成するために必要な構成を変更します。

ここに画像の説明を挿入

「Docker 構成の作成」ポップアップ ウィンドウで、コンテナー名とバインド ポートを変更します。

ここで 127.0.0.1:8080:9090 を追加します。ローカル ポート 8080 を使用して、コンテナーのポート 9090 にアクセスします。

ここに画像の説明を挿入

「実行」をクリックすると、コンテナが自動的に作成され、起動します。

docker プラグインには追加の eurekaServer コンテナがあり、ポート番号 9090 で正常に起動されていることがわかります。

ここに画像の説明を挿入

コンテナ内のアイテムへのアクセス

以前、ポート 8080 を使用してコンテナー 9090 にアクセスするようにプロジェクトを設定しました。

127.0.0.1:8080 を使用してプロジェクトにアクセスすると、プロジェクトが正常に開始されたことを示す次のページが表示されます。

ここに画像の説明を挿入

ここで基本的にすべての設定が完了しました。

ワンクリックでプロジェクトを変更してデプロイする

今後は、下の図に示すようにプロジェクトを開始できます。 1 回のクリックで、プロジェクトが Docker コンテナ内で実行されます。

ここに画像の説明を挿入

プロジェクトを変更して、Docker プラグインでプロジェクトを起動すると、コンテナを起動するだけで、変更されたプロジェクトを再パッケージ化して Docker イメージを生成することはしないため、起動時にプロジェクトは変更前の状態のままであることがわかります。 パッケージを実行して起動時にプロジェクトを直接開始する場合は、以下の手順に従います。

先ほど作成した Docker イメージの構成を変更します。

ここに画像の説明を挿入

2. 起動前に検索: 構成スタートアップ項目でツール ウィンドウをアクティブ化し、そこに Run Maven Gold を追加します。

ここに画像の説明を挿入

ここで、コマンド ラインにコマンド パッケージを追加します。

ここに画像の説明を挿入

設定が完了したら保存します。今後、プロジェクトを開始するときに、Maven パッケージ コマンドを実行して自動的にパッケージ化し、プロジェクトを開始するための Docker イメージ ファイルを生成します。

将来、プロジェクトを変更する場合は、下の図のように開始できます。 自動的にパッケージ化され、Docker イメージが作成され、プロジェクトが開始されます。

ここに画像の説明を挿入

プロジェクトを開始するだけの場合は、Docker プラグイン ウィンドウに移動し、対応するプロジェクトのコンテナーを開始します。

参照する

https://www.cnblogs.com/hsz-csy/p/9488469.html

Spring Boot のチュートリアル

これで、docker プラグインを使用してワンクリック自動デプロイを実現するアイデアに関するこの記事は終了です。関連するアイデア docker ワンクリック自動デプロイ コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • IDEA は Docker プラグインを使用します (初心者向けチュートリアル)
  • Docker プラグインを使用して IDEA のクラウド サーバーにプロジェクトをリモートでデプロイする方法
  • IDEA が Docker プラグインを統合した後のログの文字化けの問題を解決
  • IDEA の Docker プラグインを介して Springboot プロジェクトを公開する方法の詳細なチュートリアル
  • IntelliJ IDEA に Docker プラグインをインストールする詳細な手順 (2018 バージョン)

<<:  HTML 順序なしリスト 箇条書き 画像を使用した CSS の記述

>>:  JS 実用的なオブジェクト指向スネークゲームの例

推薦する

JavaScript における正規表現の実際的な応用の詳細な説明

実際の業務では、JavaScript の正規表現が依然として頻繁に使用されます。したがって、この部分...

MySQLデータベースでサポートされているストレージエンジンの比較

目次ストレージエンジンMySQL でサポートされているストレージ エンジン同時実行制御ロック粒子をロ...

この記事はVueのライフサイクルを理解するのに役立ちます

目次1. beforeCreate & created 2. マウント前とマウント済み3. ...

メタタグのビューポートはデバイス画面のCSSを制御します

コードをコピーコードは次のとおりです。 <meta name="viewport&q...

MySQL マスタースレーブ構築(複数のマスターと 1 つのスレーブ)の実装アイデアと手順

背景:最近、同社のプロジェクトは同時実行のプレッシャーに耐えられないようなので、最適化が差し迫ってい...

Mysqlマスタースレーブ同期の実装原理

1. MySQL マスター/スレーブ同期とは何ですか?マスター データベースのデータが変更されると、...

Docker コンテナで DockerFile を使用して複数の Tomcat サービスをデプロイする手順

1. [admin@JD ~]$ cd opt #ルートディレクトリにoptと入力2. [admin...

トリガーメソッドを使用して、ファイルタイプの入力をクリックせずにポップアップファイル選択ダイアログボックスを実現します。

トリガー メソッドを使用できます。JavaScript にはネイティブのトリガー関数はありません。自...

vsftpdで仮想ユーザーログインを設定する方法

yum で vsftpd をインストールします [root@localhost など]# yum -...

Vue v-for ループを書く 7 つの方法

目次1. v-forループでは常にキーを使用する2. 特定のスコープ内でv-forループを使用する3...

Vue3の状態管理の使用方法の詳細な説明

目次背景提供/注入共有状態の抽出データを提供するデータの挿入まとめ反応的な共有状態の抽出共有状態の使...

HTML Web ページ リスト タグ学習チュートリアル

HTML Web ページ リスト タグの学習チュートリアル。 HTML ページでは、リストはアウトラ...

nginx パニック問題の解決方法の詳細な説明

nginx パニック問題に関しては、まず nginx の起動プロセス中に、マスター プロセスが構成フ...

localStorageの有効期限を設定するいくつかの方法

目次問題の説明1. 基本的な解決策2. 中間的な解決策3. 高度なソリューション4. ハードコアソリ...

Linuxアカウントファイル制御管理の詳細な手順

Linux システムでは、ユーザーが手動で作成したさまざまなアカウントに加えて、システムまたはプログ...