IDEA で Spring Boot プロジェクトをデプロイするためにリモート サーバー Docker に接続する方法の詳細なチュートリアル

IDEA で Spring Boot プロジェクトをデプロイするためにリモート サーバー Docker に接続する方法の詳細なチュートリアル

始める前に

クラウドサーバーを持っています。私のはTencent Cloud Server (CentOS7)です。

Tencent Cloud ServerはDockerをインストールします。私のバージョンはDocker 19.03.9です。イメージアクセラレータのインストールと構成の詳細については、私の別のブログ投稿を参照してください:https://www.jb51.net/article/188048.htm、詳細な説明があります。

IDEAはWindowsにインストールされています

正式に仕事開始

ステップ 1: Docker を構成し、リモート アクセスを有効にします (注: これは学習の参考用です。実際の運用環境では、セキュリティ上の大きなリスクが生じるため、絶対に許可されません)。デフォルトのポートは 2375 ですが、他のポートに変更することもできます。

1. /lib/systemd/system/docker.serviceファイルを変更する

vim /lib/systemd/system/docker.service

ExecStartの後に-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock追加します。

変更後は、保存して終了するコマンドを忘れずに記述してください: wq

2. 設定ファイルを再読み込みし、Dockerを再起動して設定を有効にします。

#設定ファイルをリロードする systemctl daemon-reload
#dockerサービスを再起動します systemctl restart docker

3. curlコマンドを使用して有効になっているかどうかを確認します。

#curl docker サービス情報をダウンロード curl http://127.0.0.1:2375/info

return文があれば起動が成功したことが証明され、Dockerのバージョン、イメージアクセラレータのアドレスなどの情報を確認できますが、この時点ではリモートアクセスはまだ利用できない可能性があります。

4. Tencent Cloudのセキュリティグループルールを設定し、受信ルールでポート2375を開いてリモートアクセスを有効にします(Alibaba Cloudと同じ)。

最後に「完了」をクリックすればOKです

5. ポートがリモートからアクセスできるかどうかを確認します。ローカルブラウザに次のように入力します: http://サーバIPアドレス:2375/info

ステップ2: プロジェクトを構成してリモートDockerに接続する

1. Docker プラグインをインストールします。プラグインに移動して Docker を検索し、直接インストールします。すでにインストールされている場合は、インストールが完了したら IDEA を再起動すると、docker プラグインが使用可能になります。

2. リモートDockerへの接続を設定し、Dockerプラグインを開いて新しい接続を作成し、エンジンAPI URLにサーバーのIPアドレス: 2375を入力します。その後、予期しない事態が発生しなければ、下に「接続成功」と表示され、リモートサーバーへのDocker接続が成功します。

3. プロジェクトのpom.xmlファイルを編集し、 docker-maven-pluginプラグインをSpring Bootプロジェクトに追加します。

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

4. プロジェクトのルートディレクトリにDockerfileファイルを作成する

Dockerfileの内容

Dockerfileの予約語の分析については、私の別のブログ記事を参照してください: https://www.jb51.net/article/102902.htm。よく使われる予約語の詳細な分析が含まれていますが、例はありません。比較と理解のために、このDockerfileファイルを使用できます。

この Dockerfile の内容はおおよそ次のようになります。

最初の行: 作成するイメージはjava:8イメージ、つまりJDK8に基づいており、基本的なJavaランタイム開発環境が利用可能である必要があります。これは事前にdocker pullすることもできます。

2行目: ビルド時に、ターゲットディレクトリのjarパッケージをイメージに追加し、名前をapp.jarに変更します。

3 行目: イメージが外部に開くポートは 8888 です。これは後でポートをマッピングするときに使用します。必ず覚えておいてください。もちろん、覚えていない場合は docker history コマンドを使用して表示することもできます。

4 行目: イメージインスタンス コンテナが起動すると、java -jar /app.jar コマンドが自動的に実行されます。つまり、コンテナが起動するとプロジェクトが開始され、コンテナの起動時に追加されたコマンド パラメータによって上書きされることはありません。

指定されていないその他のパラメータはデフォルトです。たとえば、コンテナにログインするときのデフォルトのパスはルート ディレクトリです。

5. プロジェクトをパッケージ化し、イメージを自動的にビルドします。右側のMavenプロジェクトをクリックし、パッケージをダブルクリックします。

情報が表示されれば、ビルドは成功したことを意味します。これで、サーバーにアクセスしてビルドされたイメージを表示できます。

ステップ 3: イメージ インスタンス コンテナを起動し、プロジェクトにリモートでアクセスします。次の手順は、IDEA で直接実行することも、サーバー上で実行することもできます。docker コマンドに慣れるために、サーバー側でデモを行いました。

以下で使用されている docker コマンドについては、他の 2 つのブログ投稿 (https://www.jb51.net/article/113227.htm、https://www.jb51.net/article/142481.htm) を参照してください。これらの投稿には、docker イメージ コマンドとコンテナー コマンドの詳細な説明が記載されています。

1. すべてのイメージを表示: docker イメージ

図に示すように、構築したイメージwbb/shopイメージはすでに存在します。

2. コンテナを起動します: docker run -it -p 8889:8888 --name shop wbb/shop

起動時に、-p 8889:8888 はポートマッピング、つまり、ホストのポート 8889 をイメージのポート 8888 にマッピングします。ホストのポート 8889 にアクセスすることは、イメージのポート 8888 にアクセスすることに相当します。この 8888 は Dockerfile ファイルに書かれたオープンポートです。もちろん、通常は -d でバックグラウンドで実行するように指定する必要があります。私はフォアグラウンドのインタラクティブ操作を指定します。実際、それは絵画の美しさを見るためだけです。この図は夢の女神です。

3. コンテナの実行ステータス情報を表示します: docker ps

ご覧のとおり、ビルドされたイメージインスタンスは 7 分以上実行されています。ポート マッピングは次のとおりです。

4. リモートアクセスプロジェクト: http://サーバーIPアドレス:8889/shop

その前に、ホストのポート 8889 が開いていることを確認する必要があります。そうでない場合は、構成セキュリティ グループ ルールに従ってポート 8889 を解放できます。また、/shop は私のプロジェクトの仮想パスです。

さて、ここでは、IDEA を使用してリモート Docker サービスに接続し、Spring Boot プロジェクトをデプロイする方法を説明しました。不足している点があれば、ぜひアドバイスをお願いします。

付録:リモート アクセス用にポートが開いているかどうかを確認します。オンライン ポート スキャン ツール (http://www.jsons.cn/port/) を使用することもできます。サーバーの IP アドレスと対応するポート スキャンを入力すると、複数のポートをスキャンできるので、非常に便利です。

要約する

これで、IDEA がリモート サーバー Docker に接続して Spring Boot プロジェクトをデプロイする方法についての説明は終了です。関連するアイデア、Docker、デプロイ、Spring Boot プロジェクトに関するその他のコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

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

<<:  MySQL の完全バックアップとクイックリカバリ方法

>>:  Vue の vue.$set() メソッドのソースコード例の詳細な説明

推薦する

フォント名に従ってフォントを呼び出すと、ブラウザに必要なフォントが表示されます。

質問 1: ブラウザに必要なフォントを表示するように指示するにはどうすればよいでしょうか? フォント...

仮想マシンのディスクサイズを拡張する方法

Vmvare が仮想マシンのディスク サイズを設定した後、ディスク領域が不足していることがわかりまし...

MySQL データベース内の数十億のデータを素早くクリーンアップする方法

今日、ディスクアラーム例外を受け取りました。50G ディスクが爆発しました。分析と解決のプロセスは次...

HTML Selectは、デフォルトの選択を設定するためにselected属性を使用します。

オプションに属性 selected = "selected" を追加すると、それ...

Vue+Bootstrapでシンプルな学生管理システムを実現

参考までに、vueとbootstrapを使って比較的シンプルな生徒管理システムを作りました。具体的な...

3Dカルーセル効果を実現するjs

この記事では、3Dカルーセル効果をjsで実装するための具体的なコードを参考までに共有します。具体的な...

イメージのアップロードとダウンロードに docker をプロキシするためのプライベート ライブラリとして nexus を使用する

1. Nexusの設定1. Dockerプロキシを作成する外部ネットワーク ウェアハウスからローカル...

Linux プログラムの実行中に動的ライブラリをロードできない場合の解決策

Linux でダイナミック ライブラリをロードできません次のような異常事態が発生した場合./test...

位置固定オフセット問題を解決する方法の詳細な説明

質問CSS 固定配置の position:fixed は非常に使いやすいです。ブラウザのビューポート...

Vueのリストレンダリングの詳細な説明

目次1. v-for: 配列の内容を走査する(よく使われる) 2. v-for: オブジェクトのプロ...

MySQL における主キーが 0 であることと主キーの自己選択制約の関係についての詳しい説明 (詳細)

序文この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために...

HTML+CSSを使用してTG-visionホームページを作成する方法

今回はHTML+CSSレイアウトを使用して、TG-vision Shuanghui Mediaのホー...

CSS変数を使用してダークモードを実装するためのサンプルコード

最近、WeChatはAppleによってダークモードの開発を強制されました。ますます多くのウェブサイト...

Docker を使用して nginx で tomcat クラスターを構築する方法 (画像とテキスト付き)

まず、Tomcatフォルダを作成します。Dockerの設定を容易にするために、ルートディレクトリに直...