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 とグラデーションカラーの使用方法の紹介

推薦する

JS での filter() 配列フィルターの使用

目次1. はじめに2. 方法の紹介3. 使用例要約する1. はじめに配列フィルターは、フロントエンド...

uniappを使用してWeChatミニプログラムでEChartsを使用する方法

今日は、uniapp を使用して Echarts を統合し、マップ チャートを表示します。 mpvu...

React dva実装コード

目次ドヴァdvaの使用DVAの実装非同期をサポートルーターの実装成し遂げる:ドヴァdva は、red...

uniapp WeChatミニプログラムのグローバル共有を実装するためのサンプルコード

目次グローバル共有コンテンツファイルを作成するファイルをインポートしてグローバルに登録するページ共有...

Vueはパーセンテージバー効果を実現します

この記事では、パーセンテージバーを実現するためのVueの具体的なコードを参考までに共有します。具体的...

VS2019をMySQLデータベースに接続するプロセスと一般的な問題の概要

今日の午後からVS2019をMySQLで使えるのではないかと思い、いろいろ環境構築を始めました。プロ...

リンク内の href=# はどういう意味ですか?

現在のページへのリンク。 -------------------一般的な使用法は次のとおりです。 &...

MySQL トリガー: 複数のトリガー操作の作成例の分析

この記事では、例を使用して、MySQL で複数のトリガー操作を作成する方法について説明します。ご参考...

Apache ab を使用して HTTP パフォーマンス テストを実行する

MacにはApache環境が付属していますターミナルを開き、sudo apachectl -v と入...

Docker インストール tomcat dubbo-admin インスタンス スキル

1. tomcatイメージをダウンロードする docker pull tomcat:8.5.29 2...

HTML ベース URL タグ

その機能はグローバル スタイルを設定することです。その後の相対パスはこれに基づきます: <im...

数千万件のレコードをMySQLに素早く挿入する方法に関する実践的なチュートリアル

1. データベースを作成する 2. テーブルを作成する1. deptテーブルを作成する テーブル「d...

シンプルな計算機を実装するためのネイティブ js

この記事の例では、参考までに簡単な計算機を実装するためのjsの具体的なコードを共有しています。具体的...

MySQL の自動インクリメント主キーが連続していないのはなぜですか?

目次1. はじめに2. 自己増分ストレージの説明3つの自己付加価値修正メカニズム4. 自己評価を修正...