IDEA が Docker を統合してリモート展開を実現するための詳細な手順

IDEA が Docker を統合してリモート展開を実現するための詳細な手順

1. Dockerサーバーへのリモートアクセスを有効にする

docker が配置されているリモート サーバーにログインし、 vim /usr/lib/systemd/system/docker.serviceコマンドを使用して構成ファイルを変更します。変更を行う際には、アカウントに適切な権限があることを確認してください。

主な操作は、 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock の行をコメントアウトし、その後に新しい行を追加します。ポート 2375 を開き、docker へのリモート接続をサポートするために -H tcp://0.0.0.0:2375 を追加しました

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

設定ファイルを保存したら、設定を再読み込みしてDockerを再起動する必要があります。次のコマンドを使用できます。

systemctlデーモンリロード
systemctl docker.service を再起動します。

2. IDEAにdockerプラグインをインストールする

通常、新しい IDEA は docker プラグインにバインドされています。バインドされていない場合は、IDEA のプラグインで docker プラグインを検索してインストールします。インストール後、システムを再起動して有効にします。

ここに画像の説明を挿入

再起動後、ビルド、実行、展開 ——> DockerパスでDockerプラグインを見つけ、リモートDockerに接続するための新しい構成を追加します。

ここに画像の説明を挿入

接続が成功すると、IDEA プラグイン パネルでリモート Docker ホストのイメージとコンテナ、およびコンテナ操作のログやその他の情報を表示できます。

ここに画像の説明を挿入

3. Dockerイメージのビルドとアップロード

ローカルにパッケージ化された jar を Docker イメージにビルドするには、プロジェクトの pom ファイルにビルド プラグイン構成を追加する必要があります。以下は、SpringBoot プロジェクト モジュールのパッケージ構成です。重要なポイントは次のとおりです。

nathan-apiという名前の jar パッケージをビルドします。まず、 spring-boot-maven-pluginプラグインを追加し、 docker-maven-pluginプラグインを追加して、docker イメージの主要なプロパティを構成します。このプラグインはcom.spotify.docker-maven-plugin jar パッケージをダウンロードすることに注意してください。ダウンロードが失敗した場合は、いくつかのバージョンを変更してみてください。バージョンのリストについては、Maven Central Repository を参照してください。
 <ビルド>
     <finalName>nathan-api</finalName>
     <プラグイン>
         <プラグイン>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-maven-plugin</artifactId>
             <バージョン>2.4.2</バージョン>
             <処刑>
                 <実行>
                     <目標>
                         <goal>再パッケージ化</goal>
                     </目標>
                 </実行>
             </処刑>
         </プラグイン>

         <プラグイン>
             <groupId>com.spotify</groupId>
             <artifactId>docker-maven-plugin</artifactId>
             <バージョン>1.1.0</バージョン>
             <!-- プラグインを特定のフェーズにバインドして実行します -->
             <処刑>
                 <実行>
                     <id>ビルドイメージ</id>
                     <!-- ユーザーは mvn package を実行するだけで、mvn docker:build が自動的に実行されます -->
                     <phase>パッケージ</phase>
                     <目標>
                         <goal>ビルド</goal>
                     </目標>
                 </実行>
             </処刑>
             <構成>
                 <!--docker ファイル ディレクトリを指定します-->
                 <dockerディレクトリ>${project.basedir}/docker</dockerディレクトリ>
                 <!-- 生成されたイメージ名を指定します -->
                 <画像名>${プロジェクト.アーティファクトID}</画像名>
                 <!--タグを指定-->
                 <画像タグ>
                     <imageTag>最新</imageTag>
                 </画像タグ>
                 <!-- リモート Docker API アドレスを指定します -->
                 <dockerホスト>http://xxx.168.146.63:2375</dockerホスト>
                 <!-- 以下は、jar パッケージを docker コンテナの指定されたディレクトリにコピーするための構成です -->
                 <リソース>
                     <リソース>
                         <ターゲットパス>/</ターゲットパス>
                         <!--jar パッケージが配置されているパスはターゲット ディレクトリに対応します -->
                         <ディレクトリ>${project.build.directory}</ディレクトリ>
                         <!-- Dockerfile に追加されたファイル名に対応する、含める必要のある jar パッケージ -->
                         <include>${project.build.finalName}.jar</include>
                     </リソース>
                 </リソース>
             </構成>
         </プラグイン>

     </プラグイン>
 </ビルド>

前の手順では、dockerファイルのディレクトリをdocker mavenプラグインで設定し、モジュールのルートディレクトリのdockerフォルダを指定しました。次に、 src と同じレベルのDockerfileという新しいファイルを作成します。内容は次のとおりです。

java:8より
ボリューム /tmp
# パッケージ化されたjarをapp.jarにコピーします。ADD nathan-api.jar app.jar
エクスポーズ 20561
# 以下は、jar パッケージの起動コマンド構成です。ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-Duser.timezone=GMT+8", "-jar", "app.jar"]

上記の設定後、dockerイメージをビルドするアクションがmaven packageコマンドにバインドされたので、パッケージを実行できます。

このステップで、作成者はADD failed: file not found in build context or excluded by .dockerignoreエラーが発生しました。主な問題は、 Dockerfile内の ADD コマンドがコピーする必要があるソース ファイルが見つからないことです。このエラーが発生した場合は、まずDockerfileに設定されているファイル パスが正しいかどうかを確認し、次に実際にパッケージ化された jar 名がDockerfileに設定されているファイル名と同じかどうかを確認します。設定を確認し、パスと名前のエラーがないことを確認しました。最後に、IDEA を数回クリーンアップして再起動すると、再び動作しました。なぜと聞かないでください、尋ねることは形而上学です

ここに画像の説明を挿入

Docker イメージがビルドされたら、イメージ ファイルを右クリックして、コンテナーの作成を選択します。新しいコンテナを作成する最も簡単な手順は、コンテナに名前を付け、ホストからコンテナへのポート マッピングを追加することです。作成が成功すると、コンテナは自動的に実行されます。

ここに画像の説明を挿入

これで、IDEA に docker を統合してリモート デプロイメントを実現する詳細な手順に関するこの記事は終了です。より関連性の高い IDEA リモート デプロイメント コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • IDEA が Docker を統合してリモート展開を実現するための手順
  • IdeaはリモートDockerをデプロイし、ファイルを構成する
  • Docker プラグインを使用して IDEA のクラウド サーバーにプロジェクトをリモートでデプロイする方法
  • IDEA で Spring Boot プロジェクトをデプロイするためにリモート サーバー Docker に接続する方法の詳細なチュートリアル
  • Idea による Springboot の Docker への Java リモート ワンクリック デプロイ
  • Docker イメージとコンテナ サービスの IDEA リモート管理の実装

<<:  マップタグパラメータの詳細な紹介と使用例

>>:  CSS3 のカラー値 RGBA とグラデーションカラーの使用方法の紹介

推薦する

私の CSS フレームワーク - base.css (ブラウザのデフォルト スタイルをリセット)

コードをコピーコードは次のとおりです。 @文字セット "utf-8"; /* @...

すべてのホストがmysqlにアクセスできるようにする方法

1. MySQLデータベースのユーザーテーブルのレコードのHostフィールド値を%に変更します。奇妙...

Vueはキャンバスを使用して画像圧縮アップロードを実現します

この記事では、キャンバスを使用して画像圧縮アップロードを実現するVueの具体的なコードを参考までに共...

JavaScript でよく使われる 3 つの Web エフェクトの詳細な説明

目次1要素オフセットシリーズ1.1 オフセットの概要1.2 オフセットとスタイルの違い視覚領域クライ...

ウィンドウ表示効果を実現するJavaScript

この記事では、ウィンドウ表示効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

CSS で隠し要素を実現する 7 つの興味深い方法

序文非表示要素の 3 つの属性である表示、可視性、不透明度の類似点と相違点は、フロントエンドの就職面...

js 学習ノート: class、super、extends キーワード

目次序文1. es6の前にオブジェクトを作成する2. es6 後のクラス宣言3. クラスの継承4. ...

ディレクトリスクロール効果を実現するネイティブJS

これはネイティブ JS で実装されたテキスト スクロール効果です。この効果は通常、ニュース、ダイナミ...

YUMを使用してdockerをインストールする方法

次の図に示すように: Centos 7.0以上であれば問題ありません。現在のシステム カーネル バー...

MySQL サービスを起動できない問題の解決策を含む MySQL 5.7.17 インストール チュートリアル

.net 開発に関しては、Microsoft の SQL Server データベースに精通しており、...

7つの基本的なXHTMLコーディングルールの概要

1. すべてのタグには対応する終了タグが必要です以前の HTML では、<p> や &l...

MySQL データ定義言語 DDL の基本ステートメント

MySQL DDL ステートメントDDL、DMLとは何ですか。 DDL はデータ定義言語であり、CR...

Vue はウェブページの言語切り替えの国際化を実装します

1. 基本的な手順1: yarn add vue-i18nをインストールするこのパスに新しい .js...

Tencent Cloud 上で Hadoop 3.x 疑似クラスターを構築する方法を説明します

1. 環境整備CentOS Linux リリース 7.5.1804 (コア)インストールフォルダを作...

さまざまなHTTPリターンステータスコードの詳細な説明

サイト上のページを表示するためのリクエストがサーバーに送信されると(たとえば、ユーザーがブラウザでペ...