アイデアは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 実用的なオブジェクト指向スネークゲームの例

推薦する

Vue2/vue3 ルーティング権限管理方法の例

1. Vueルーティングの権限制御には一般的に2つの方法がありますa. ルーティングメタ情報(メタ)...

Centos サーバーで nginx を設定する方法の例

セキュアターミナルMobaXterm_Personalをダウンロードまず、安全なターミナルをダウンロ...

Dockerコンテナの入退出方法の詳細な説明

1 Dockerサービスを開始するまず、docker サービスを開始する方法を知っておく必要がありま...

Nginxサービス500:内部サーバーエラーの原因の1つ

500 (内部サーバー エラー) サーバーでエラーが発生したため、要求を完了できませんでした。 50...

Linux で killall コマンドを使用してプロセスを終了する 8 つの例

Linux コマンドラインには、プロセスを強制終了するためのコマンドが多数用意されています。たとえば...

Oracle の開閉の 4 つのモード

>1 データベースを起動するcmd コマンド ウィンドウで、「sqlplus」を直接入力して ...

HTML テーブル マークアップ チュートリアル (40): ヘッダーの暗い境界線の色属性 BORDERCOLORDARK

テーブルヘッダーでは、暗い境界線の色を個別に定義できます。基本的な構文<TH 境界線の色を暗く...

CSSで検索ボックスを非表示にする機能を実装します(アニメーション順方向と逆方向のシーケンス)

上部のメニュー バーに検索ボックスを配置するのは一般的なシナリオですが、検索機能がそれほど頻繁に使用...

mysql バックアップ スクリプト mysqldump の使い方の詳細な説明

この記事では、参考までにMySQLバックアップスクリプトを紹介します。具体的な内容は次のとおりです。...

重複したMySQLレコードを現場でチェックし、処理する実践的な記録

目次序文分析するデータ合計繰り返し率どこにあるかと持っているかの違い要約する序文私はソフトウェアの導...

Dockerはコンテナポートバインディングのローカルポートを実装します

今日、イメージを起動した後、HTTP リクエスト経由でアクセスできないという小さな問題が発生しました...

マウスを置いたときに半透明効果のテキスト説明を実現するための純粋な CSS (初心者は必読)

効果は以下のとおりです。 例1 例2:例1[結婚式の計画]を例にとるHTML: <div cl...

Mysql での結合操作

結合の種類1. 内部結合: 結合関係を持つ 2 つのテーブル内のフィールドは、結合関係を満たすレコー...