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

推薦する

HTMLページの読み込みと解析プロセスの詳細な紹介

ブラウザがHTMLを読み込みレンダリングする順序1. IE は上から下へダウンロードし、上から下へレ...

Ubuntu 18.04 での Pycharm インストール チュートリアルの実装

方法1: Pycharmをダウンロードしてインストールするダウンロードアドレス: https://w...

HTML に CSS を導入するいくつかの方法の紹介

目次1. HTMLタグ要素にCSSスタイルを直接埋め込む2. HTMLのheadセクションにおけるス...

aタグのname属性とid属性を使用してページ内を移動する方法

以前はaタグのname属性を使ってジャンプする方法しか知らなかったのですが、idも使えることを今日知...

MySQL のクラスター化インデックスとクラスター化インデックスの成長の仕組みを理解する

このノートでは、 MySQL の B+Tree インデックスとは何ですか?クラスター化インデックスは...

Vue はグラフィック検証コードログインを実装します

この記事では、グラフィック認証コードログインを実装するためのVueの具体的なコードを参考までに紹介し...

RHEL8 で静的 IP アドレスを設定するさまざまな方法の簡単な分析

Linux サーバーで作業している場合、ネットワーク カード/イーサネット カードに静的 IP アド...

マインドマップを使って4つの側面からWeb標準の価値を議論する

このアイデアを改善し、より良い意見を得られることを期待して、議論を刺激するためにいくつかの値を大まか...

Presto をインストールし、Docker で Hive を接続する詳細なプロセス

1. はじめにPresto は、ギガバイトからペタバイトに及ぶデータ ソースに対してインタラクティブ...

MySQL サービスを完全に削除する方法 (レジストリをクリーンアップする)

序文あるプロジェクトの実行可能ファイルをインストールすると、MySQL 自体をインストールできるよう...

CentOS ベースの OpenStack 環境の展開に関する詳細なチュートリアル (OpenStack のインストール)

エフェクト表示: 環境準備コントローラーノード: 6GB 4時間60GB/30GB/30GB計算ノー...

nginx クッキーの有効期間に関する議論の要約

訪問するたびにブラウザにCookieが生成されますが、 Cookieの存在はユーザーにとって良いこと...

クラウドサーバーを購入し、Alibaba Cloud に Pagoda Panel をインストールする手順

アリババクラウドがサーバーを購入クラウドサーバーを購入し、サーバーバージョンとしてcentos 7....

VueコンポーネントライブラリElementUIはテーブルリストのページング効果を実現します

ElementUIはテーブルリストのページング効果のチュートリアルを実装しています。参考までに。具体...

MySQL で自動インクリメントシーケンスを実装するためのサンプルコード

1. シーケンステーブルを作成する テーブル `sequence` を作成します ( `name` ...