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 失敗: ビルド コンテキストでファイルが見つからないか、.dockerignore によって除外されているというエラーが発生しました。主な問題は、Dockerfile 内の ADD コマンドがコピーする必要があるソース ファイルが見つからないことです。このエラーが発生した場合は、まず Dockerfile で設定されたファイル パスが正しいかどうかを確認し、次に実際にパッケージ化された jar 名が Dockerfile で設定されたファイル名と同じかどうかを確認します。設定を確認し、パスと名前のエラーがないことを確認しました。最後に、IDEA を数回クリーンアップして再起動すると、再び動作しました。なぜと聞かないでください、尋ねることは形而上学です

ここに画像の説明を挿入

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

ここに画像の説明を挿入

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

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

<<:  ECMAscript の新機能の紹介

>>:  IE6/7 における a.getAttribute(href,2) 問題の分析と解決

推薦する

DockerコンテナでPythonを実行するディープラーニング環境を構築する方法

タスク マネージャーで仮想化を確認し、有効になっている場合は仮想化を、無効になっている場合はコンピュ...

nginx で第 3 レベルドメイン名を設定する方法の例

問題の説明nginx を設定することで、異なるポートを介して異なる Web アプリケーションにアクセ...

MySQL 5.7 をバイナリモードでインストールし、Linux でシステムを最適化する手順

この記事では主に、MySQL バイナリ パッケージのインストール/起動/シャットダウンのプロセスを紹...

overflow:autoの使い方の詳しい説明

本文に入る前に、オーバーフローとフレックスレイアウトの使い方をいくつか紹介します。 overflow...

Linux システムに 3 つ以上の Tomcat をインストールする (詳細な手順)

複数のTomcatをインストールする場合は、システムにJDKがインストールされている必要があり、 T...

Docker Composeでコンテナ管理の問題を解決する

Docker の設計では、コンテナは 1 つのアプリケーションのみを実行します。しかし、現在のアプリ...

CUDA8.0とCUDA9.0はUbuntu16.04で共存します

序文Github にある以前のコードには、CUDA 8.0 環境が必要なものもあります。初心者の場合...

Jsモジュール化の動作原理とソリューションの詳細な説明

目次1. モジュラーコンセプト2. モジュール化3. モジュール化プロセス1. 通常の記述(グローバ...

LinuxでHomebrewを使用する正しい方法

多くの人が Linux Homebrew を使用しています。これをより良く使用するための 3 つのヒ...

HTMLの基礎: HTMLの基本構造

HTML ハイパーテキスト ドキュメントの基本構造は、ドキュメント ヘッダーとドキュメント本体の 2...

HTML独習の旅(I)基本要素と属性の練習(自分でコードを書く)

私は W3school のチュートリアルに従いました。チュートリアルはとても良いと思います。各セクシ...

ReactとAntdのFormコンポーネントを組み合わせてログイン機能を実装する方法を詳しく説明します

目次1. ReactとAntdを組み合わせてログイン機能を実現2. ReactとAntdを組み合わせ...

Reactでコンポーネントロジックを共有する3つの方法

簡単に説明すると、これら 3 つの方法は、レンダリング プロップ、高階コンポーネント、カスタム フッ...

Baota Linux パネル コマンド リスト

目次Pagodaをインストールする管理塔Nginx サービス管理Apache サービス管理MySQL...

Linux での Nginx 監視の問題

nginxのインストール仮想マシンがインターネットにアクセスできることを確認します。 1. ルートユ...