Docker と Intellij IDEA の融合により、Java 開発の生産性が 10 倍向上

Docker と Intellij IDEA の融合により、Java 開発の生産性が 10 倍向上

Idea は Java 開発のための強力なツールであり、SpringBoot は Java エコシステムで最も人気のあるマイクロサービス フレームワークであり、Docker は現在最も注目されているコンテナー テクノロジーです。これらを組み合わせると、どのような化学反応が起こるのでしょうか。

1. 開発前の準備

1. Dockerのインストールについては、https://docs.docker.com/install/を参照してください。

2. Dockerリモート接続ポートを設定する

 : : vi /usr/lib/systemd/system/docker.service を実行します。

下の図に示すように、ExecStartを見つけて、最後に-H tcp://0.0.0.0:2375を追加します。

3. Dockerを再起動する

systemctlデーモンリロード
 systemctl dockerを再起動します

4. ポートを開く

ファイアウォールコマンド --zone=public --add-port=2375/tcp --permanent

5.Ideaはdockerプラグインをインストールして再起動します

6. リモートDockerに接続する

(1)設定を編集する

(2)リモートDockerアドレスを入力する

(3)接続が成功すると、リモートDockerコンテナとイメージが一覧表示されます。

2. 新しいプロジェクト

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

プロジェクト構造図

(1)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>com.fengqi</groupId>
    <artifactId>dockerデモ</artifactId>
    <バージョン>1.0.0</バージョン>
    <relativePath>../pom.xml</relativePath> <!-- リポジトリから親を検索 -->
  </親>
  <groupId>com.fengqi</groupId>
  <artifactId>ウェブ</artifactId>
  <バージョン>1.0.0</バージョン>
  <name>ウェブ</name>
  <description>Spring Boot のデモ プロジェクト</description>
  
 <依存関係>
    <依存関係>
      <groupId>org.springframework.boot</groupId>
      <artifactId>スプリングブートスターター</artifactId>
    </依存関係>
 
    <依存関係>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>テスト</scope>
    </依存関係>
    <依存関係>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </依存関係>
    <依存関係>
      <グループID>log4j</グループID>
      <アーティファクトID>log4j</アーティファクトID>
      <バージョン>1.2.17</バージョン>
    </依存関係>
  </依存関係>
 
  <ビルド>
    <プラグイン>
      <プラグイン>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </プラグイン>
      <プラグイン>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <バージョン>1.0.0</バージョン>
        <構成>
          <dockerディレクトリ>src/main/docker</dockerディレクトリ>
          <リソース>
            <リソース>
              <ターゲットパス>/</ターゲットパス>
              <ディレクトリ>${project.build.directory}</ディレクトリ>
              <include>${project.build.finalName}.jar</include>
            </リソース>
          </リソース>
        </構成>
      </プラグイン>
      <プラグイン>
        <artifactId>maven-antrun-plugin</artifactId>
        <処刑>
          <実行>
            <phase>パッケージ</phase>
            <構成>
              <タスク>
                <コピー todir="src/main/docker" ファイル="target/${project.artifactId}-${project.version}.${project.packaging}"></コピー>
              </タスク>
            </構成>
            <目標>
              <goal>実行する</goal>
            </目標>
          </実行>
        </処刑>
      </プラグイン>
    </プラグイン>
  </ビルド>

(2)src/mainディレクトリにdockerディレクトリを作成し、Dockerfileファイルを作成する

openjdk:8-jdk-alpine から
*.jar app.jar を追加します
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

(3)リソースディレクトリにapplication.propertiesファイルを作成する

ログ記録.config = クラスパス:logback.xml
ログのパス=/home/developer/app/logs/
サーバーポート=8990

(4)DockerApplicationファイルを作成する

@SpringBootアプリケーション
パブリッククラスDockerApplication {
 パブリック静的voidメイン(String[] args) {
 SpringApplication.run(DockerApplication.class、引数);
 }
}

(5)DockerControllerファイルを作成する

@レストコントローラ
パブリッククラスDockerController {
 静的ログ log = LogFactory.getLog(DockerController.class);
 @リクエストマッピング("/")
 パブリック文字列インデックス(){
 log.info("こんにちはDocker!");
 「Hello Docker!」を返します。
 }
}

(6)設定を追加する

コマンドの説明

イメージタグ: イメージ名とタグを指定します。イメージ名は docker-demo、タグは 1.1 です。

ポートのバインド: ホスト ポートをコンテナーの内部ポートにバインドします。形式は[ホストポート]:[コンテナ内部ポート]です。

バインドマウント: ホストディレクトリをコンテナの内部ディレクトリにマウントします。形式は[ホストディレクトリ]:[コンテナ内部ディレクトリ]です。

この springboot プロジェクトは、コンテナの /home/developer/app/logs/ ディレクトリにログを出力します。ホスト ディレクトリをコンテナの内部ディレクトリにマウントすると、ログはコンテナ外のホスト ディレクトリに保存されます。

(7) Mavenパッケージング

(8)走る

ここで、イメージ名はdocker-demo:1.1で、dockerコンテナはdocker-serverであることがわかります。

(9)成功した​​手術

(10)ブラウザアクセス

(11) ログ表示

それ以来、Springboot プロジェクトはアイデアを通じて Docker に正常にデプロイされました。 Java Web プロジェクトのデプロイがこんなに簡単で便利だなんて想像もつきません!

最後に、関連する学習チュートリアルを皆さんと共有したいと思います。

https://www.bilibili.com/video/BV14t411z77T

IDEAチュートリアル

https://www.bilibili.com/video/BV1PZ4y1j7QK

Java 開発の生産性を 10 倍に向上させる Docker meets Intellij IDEA に関するこの記事はこれで終わりです。Docker meets IDEA に関するその他の関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Idea で Docker を使用して SpringBoot プロジェクトをデプロイする詳細な手順
  • IDEA の Docker プラグインを介して Springboot プロジェクトを公開する方法の詳細なチュートリアル
  • SpringBoot のパッケージ化と Docker へのアップロード、およびマルチインスタンス デプロイメントの実装に関する簡単な分析 (IDEA バージョン)
  • アイデアに基づいてSpringbootプロジェクトをDockerにデプロイする
  • Idea による Springboot の Docker への Java リモート ワンクリック デプロイ

<<:  MySQL のデータ削除とデータ テーブル メソッドの例

>>:  jsを使用してスライダーをドラッグする効果を実現します

推薦する

MySQLの不合理なMaxIdleConnsにより接続が短くなる

1 背景最近、Shimo Document のオンライン ビジネスでパフォーマンスの問題が発生しまし...

Vue のミックスインの使用方法の詳細な説明

目次序文1. Mixin とは何ですか? 2. Mixin はいつ使用すればよいですか? 3. Mi...

MySQLデータベースインデックスの詳細な説明

目次1. MySQLインデックスの紹介2. MySQLの5種類のインデックスの詳しい説明1. 総合索...

ウェブページ作成の基本宣言文書型記述(DTD

CSS レイアウトを使用して WEB 標準に準拠した Web ページを作成することは、jb51.ne...

ReactHooks バッチ更新状態とルートパラメータの取得例の分析

目次1. 一括更新の方法コンソール出力2. フックがルーティングパラメータを取得する方法実行効果1....

WeChatアプレットbindtapとcatchtapの違いの詳細な説明

目次1. イベントとは何ですか? 2. イベントの使い方3. バインドタップとキャッチタップの違い4...

ubuntu20.04 上の CLion2020.1.3 での ROS のインストールと設定の詳細な説明

1. CLionをダウンロード、インストール、アクティベートするオンラインで提供されるチュートリアル...

Dockerコンテナアプリケーションログの表示方法

docker アタッチコマンドdocker attach [options] 容器実行中のコンテナに...

JavaScript と JQuery フレームワークの基本チュートリアル

目次1. JS オブジェクトDOM –1、機能–2、テスト3. jQuery –1. 概要–2、使用...

Linux ダイナミックライブラリの生成と使用ガイドの詳細な説明

Linux での動的ライブラリ ファイルのファイル名は libxxx.so のようになります。ここで...

Centos7のFirewalldファイアウォールの基本コマンドの詳細な説明

1. Linuxファイアウォールの基礎Linux ファイアウォール システムは主にネットワーク層で動...

Vueでjsonpを使用する方法

目次1. はじめに2. インストール3. 使用4. vueファイルの使用1. はじめに最近、手書き入...

HTML ウェブページでのアンカー(名前付きアンカー)の使用の概要

以下の情報はインターネットから収集したものです1. アンカーは、Web ページ作成におけるハイパーリ...

Nginx+SSL による双方向認証を実装するためのサンプル コード

まずディレクトリを作成する cd /etc/nginx mkdir ssl cd ssl CA と自...

MySQL で準備、実行、割り当て解除ステートメントを使用するチュートリアル

序文MySQLでは、準備、実行、割り当て解除を正式にはPREPARE STATEMENTと呼びます。...