IDEA で Docker プロジェクトをデプロイする手順

IDEA で Docker プロジェクトをデプロイする手順
現在、ほとんどのプロジェクトが Docker 上にデプロイされ始めていますが、デプロイのプロセスはまだ少し面倒なので、この記事では、IDEA を使用してワンクリックでデプロイする方法を説明したいと思います。

Dockerの設定

設定ファイルを変更する

Docker 構成ファイルを開きます。
vim /usr/lib/systemd/system/docker.service
次の行をコメントアウトします。
# 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
設定ファイルを再ロードして起動します:
systemctlデーモンリロード
systemctl ドッカーを起動する

次の図に示すように:

IDEA を使用した Docker の設定

Dockerプラグインをインストールする

Docker情報を設定する

設定で Docker を構成するには、API URL を構成する必要があります。接続が成功すると、以下のように表示されます。

プロジェクト構築

新しいSpringbootプロジェクトを作成する

IDEA を通じてプロジェクトを構築するには、何も選択する必要はなく、クリックし続けるだけです。

pomファイルを変更する

最も重要な2つのポイントは次のとおりです。

1. プロパティタグを追加する

<docker.image.prefix>デモ</docker.image.prefix>

2. 新しいプラグインタグを追加する

<プラグイン>
 <groupId>com.spotify</groupId>
 <artifactId>docker-maven-plugin</artifactId>
 <バージョン>1.2.1</バージョン>
 <構成>
   <イメージ名>${docker.image.prefix}/${project.artifactId}</イメージ名>
   <dockerディレクトリ></dockerディレクトリ>
   <リソース>
     <リソース>
       <ターゲットパス>/</ターゲットパス>
       <ディレクトリ>${project.build.directory}</ディレクトリ>
       <include>${project.build.finalName}.jar</include>
     </リソース>
   </リソース>
 </構成>
</プラグイン>

完全な pom ファイルは次のとおりです。

<?xml バージョン="1.0" エンコーディング="UTF-8"?>
<プロジェクト xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
 <モデルバージョン>4.0.0</モデルバージョン>
 <親>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <バージョン>2.2.1.RELEASE</バージョン>
   <relativePath/> <!-- リポジトリから親を検索 -->
 </親>
 <グループID>com.example</グループID>
 <artifactId>デモ</artifactId>
 <バージョン>0.0.1</バージョン>
 <name>デモ</name>
 <description>Spring Boot のデモ プロジェクト</description>

 <プロパティ>
   <java.version>1.8</java.version>
   <docker.image.prefix>デモ</docker.image.prefix>
 </プロパティ>

 <依存関係>

   <依存関係>
     <groupId>org.springframework.boot</groupId>
     <artifactId>スプリングブートスターター</artifactId>
   </依存関係>

   <依存関係>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
   </依存関係>

   <依存関係>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-test</artifactId>
     <scope>テスト</scope>
     <除外事項>
       <除外>
         <groupId>org.junit.vintage</groupId>
         <artifactId>junit-vintage-engine</artifactId>
       </除外>
     </除外>
   </依存関係>
 </依存関係>

 <ビルド>
   <プラグイン>
     <プラグイン>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-maven-plugin</artifactId>
     </プラグイン>
     <プラグイン>
       <groupId>com.spotify</groupId>
       <artifactId>docker-maven-plugin</artifactId>
       <バージョン>1.2.1</バージョン>
       <構成>
         <イメージ名>${docker.image.prefix}/${project.artifactId}</イメージ名>
         <dockerディレクトリ></dockerディレクトリ>
         <リソース>
           <リソース>
             <ターゲットパス>/</ターゲットパス>
             <ディレクトリ>${project.build.directory}</ディレクトリ>
             <include>${project.build.finalName}.jar</include>
           </リソース>
         </リソース>
       </構成>
     </プラグイン>
   </プラグイン>
 </ビルド>

</プロジェクト>

新しいDockerfileを作成する

ルートディレクトリに新しいDockerfileファイルを作成する必要があります

#ベースイメージを指定してカスタマイズする FROM java:8

#メンテナー情報 メンテナー zhouzhaodong <[email protected]>

#ここでの /tmp ディレクトリは実行時に匿名ボリュームとして自動的にマウントされ、/tmp に書き込まれた情報はコンテナストレージ層 VOLUME /tmp に記録されません。

#コンテキストディレクトリのtarget/demo-1.0.0.jarをコンテナにコピーします。COPY target/demo-0.0.1.jar demo-1.0.0.jar

#bash モードで実行して、demo-1.0.0.jar にアクセスできるようにします。#RUN新しいレイヤーを作成し、そのレイヤーでこれらのコマンドを実行します。実行が完了したら、このレイヤーの変更をコミットして新しいイメージを形成します。
bash -c "touch /demo-1.0.0.jar" を実行します。

# ランタイム コンテナによって提供されるサービス ポートを宣言します。これは単なる宣言です。この宣言により、アプリケーションは実行時にこのポートのサービスを開きません。EXPOSE 8080

#コンテナの起動プログラムとパラメータを指定します <ENTRYPOINT> "<CMD>"
エントリポイント ["java","-jar","demo-1.0.0.jar"]

新しいコントローラーファイルを作成する

pom ファイルに Web 依存関係を追加することを忘れないでください。

@レストコントローラ
パブリッククラスtestController{

  @リクエストマッピング("/")
  パブリック文字列テスト(){
    「テストDocker」を返します。
  }

}

Maven パッケージング

パッケージをインストールします:


jar パッケージを生成します:

新しい構成

新しい Dockerfile 実行構成を作成します。


次の情報を追加し、作成した Dockerfile ファイルを見つけて、ポート マッピングを構成します。

Dockerイメージを生成して実行する

新しく作成された Dockerfile 実行構成を実行するだけです。


操作が成功すると、ログ ウィンドウにプロジェクト操作情報が表示されます。


対応するアドレスにアクセスすると、入力した情報が表示されます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Idea で Docker を使用して SpringBoot プロジェクトをデプロイする詳細な手順
  • Linux+Docker+SpringBoot+IDEA のワンクリック自動デプロイの詳細な手順
  • Idea による Springboot の Docker への Java リモート ワンクリック デプロイ
  • アイデアに基づいてSpringbootプロジェクトをDockerにデプロイする
  • IDEA で Docker を WSL2 にデプロイする詳細なプロセス

<<:  MySQL でテーブルデータをクリアする 2 つの方法とその違い

>>:  VUE無限レベルツリーデータ構造表示の実装

推薦する

18 個のキラー JavaScript ワンライナー

序文JavaScript は習得が最も簡単な言語の 1 つであるため、成長と繁栄を続けており、市場に...

MySQL Installer 8.0.21 インストール チュートリアル (画像とテキスト付き)

1. 理由新しいシステムに MySQL を再インストールする必要があったので、将来詳細を忘れた場合...

Mysql の 2 つのテーブル間の結合クエリの 4 つの状況の概要

一般的に言えば、より完全な結果を得るためには、2 つ以上のテーブルから結果を取得する必要があります。...

...

DockerにRocketMQをインストールするための実装手順

目次1. 画像を取得する2. ブローカーサーバーを作成する3. ブローカーを作成する4. Rocke...

DockerコンテナでLNMPをコンパイルする例

目次1. プロジェクトの説明2. Nginxイメージの作成3. MySQLイメージの作成4. PHP...

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

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

Tomcat パイプライン モードのパイプラインとバルブの詳細な説明

序文比較的複雑な大規模システムでは、複雑なロジックで処理する必要があるオブジェクトまたはデータ フロ...

HTMLエリアタグの詳しい説明

<area> タグは、イメージ マップ内の領域を定義します (注: イメージ マップはク...

DELL R730 サーバーの構成 RAID とインストール サーバー システムとドメイン制御の詳細なグラフィック チュートリアル

最近、会社で DELL R730 サーバーを購入したのですが、偶然次のチュートリアルを見つけたので、...

MySQLで一意のサーバーIDを生成する方法

序文MySQL では、server-id を使用してデータベース インスタンスを一意に識別し、それを...

Node.js の TCP 接続処理のコア プロセス

数日前、友人と Node.js の epoll とリクエスト処理に関する知識を交換しました。今日は、...

Vue の NetEase Cloud Music Player インターフェースを模倣したシンプルな実装プロセス

仕事のプロジェクトのニーズにより、曲の再生が必要となり、さまざまな資料を参考にして、NetEase ...

MySQL 8.0 に移行する際の注意点 (要約)

パスワードモードPDO::__construct(): サーバーがクライアントに不明な認証方法を要求...