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) 問題の分析と解決

推薦する

画像の半透明処理 画像と半透明の背景の実装のアイデアとコード

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

HTMLページをクリックしてダウンロードファイルを実装する2つの方法

1. <a>タグを使用して完了します <a href="/user/te...

Vueはスクロールロードテーブルを実装します

目次成果を達成する転がり荷重知識備蓄コンポーネントのパッケージ1. コンポーネントの命名2. 小道具...

Zabbix redis 自動ポート検出スクリプトは json 形式を返します

自動検出を行う際には、ポートなどの情報を取得してjson形式で返すスクリプトが必ず存在します。Red...

OpenShift のクイックインストールの詳細な手順

OpenShift 3.9 の最新バージョンを体験する最も早い方法。準備 [root@host ~]...

MySQL 5.7.21 履歴データディレクトリからデータを復元するチュートリアルの解凍バージョン

状況の説明: データベースが異常に起動およびシャットダウンしたため、サービスを再度起動したときに「起...

mysql8 共通テーブル式 CTE 使用例の分析

この記事では、例を使用して、MySQL 8 の共通テーブル式 (CTE) の使用方法を説明します。ご...

ubuntu14.04 に jdk1.8 をインストールするチュートリアル

1. jdkダウンロードアドレスをダウンロードする我下載的是jdk-8u221-linux-x64....

Linux は n 日前のログとサンプルコマンドを自動的に削除します

1. ファイル削除コマンド:対応するディレクトリを検索します -mtime + 日数 -name &...

Vue は動的なプログレスバー効果を実現します

この記事では、動的なプログレスバー効果を実現するためのVueの具体的なコードを例として紹介します。具...

HTML ページ ソース コード レイアウトの概要_Powernode Java Academy

HTML ページ ソース コード レイアウトの概要この紹介では、Google のホームページのソー...

MacでNodeとnpmを完全にアンインストールする方法

npmアンインストール sudo npm アンインストール npm -g この文に遭遇して npm ...

vue3.0+echarts は 3 次元の縦棒グラフを実現します

序文: Vue3.0はechartsの3次元縦棒グラフを実装します結果: 実装手順: 1. echa...

Vite と Vue CLI の長所と短所

Vue エコシステムには Vite と呼ばれる新しいビルド ツールがあり、Vue CLI よりも 1...

JavaScript コードベースをよりクリーンにする 5 つの方法

目次1. 短絡や条件文の代わりにデフォルトのパラメータを使用する2. 複数の条件の処理3. スイッチ...