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() メソッドのソースコード例の詳細な説明

推薦する

共有サイドバーを実装するためのネイティブJS

この記事では、ネイティブ JS で実装された共有サイドバーを紹介します。効果は次のとおりです。 以下...

シンプルなリスト機能を実装するミニプログラム

この記事の例では、参考のために簡単なリスト機能を実装するアプレットの具体的なコードを共有しています。...

ウェブデザインと制作におけるハイパーリンクの効果の向上

ハイパーリンクを使用すると、ページからページへ、またはサイトからサイトへ瞬時に移動できます。このよう...

ネイティブJSを使用した遅延読み込みlazyLoadの3つの方法の概要

目次序文方法1: 高コントラスト方法2: getBoundingClientRect() APIを使...

CentOS 7 に MySQL 8 をインストールするための詳細なチュートリアル

準備するこの記事の環境情報: ソフトウェアバージョンセントOSセントOS7.4マイグレーション8.0...

JavaScriptの厳密モードが8進数をサポートしていない問題の説明

JavaScript厳密モードが 8 進数をサポートしていないという問題に関して、まず、 Java...

MySQL マルチテーブルクエリの具体例

1. SELECT句を使用して複数のテーブルをクエリするSELECT フィールド名 FROM tab...

CentOS のクローン作成、Linux 仮想マシンの共有の完全な手順

序文Linux が完全にセットアップされると、クローン機能を使用して短時間で複数の Linux を作...

Vue シングルページ SEO の 4 つのソリューションについての簡単な説明

目次1.Nuxtサーバーサイドレンダリングアプリケーションの展開(SSRサーバーレンダリング)利点:...

HTML のオートコンプリートを無効にして履歴を表示しないようにする

入力ボックスには、コンテンツを入力するときに常に入力履歴が表示されます。これを無効にする現在の方法は...

MySQLログに関する知識のまとめ

目次SQL実行順序ビンログ何ですかいつ生産されるのか何の役に立つんだディスクはいつドロップされますか...

MySQL データベースのマスター スレーブ分離のサンプル コード

導入MySQL データベースの読み取りと書き込みの分離を設定すると、データベースに対する書き込み操作...

MySql8.0以降のバージョンでROOTパスワードを正しく変更する方法

展開環境:インストールバージョン Red Hat Cent 7.0 MYSQL バージョン 8.0....

Linuxはバイナリモードを使用してmysqlをインストールします

この記事では、LinuxにバイナリモードでMySQLをインストールする具体的な手順を参考までに紹介し...

CSSスクロールバーのスタイルをカスタマイズする方法の詳細な説明

この記事では、CSS スクロールバー セレクターを紹介し、Webkit ブラウザーと IE ブラウザ...