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を使用してスライダーをドラッグする効果を実現します

推薦する

Linux システムでの vim プラグインのインストールの概要

目次vimプラグインマネージャーをインストールするプラグインデモを追加プラグインを削除するには: v...

SpringBoot プロジェクトの Docker クイック デプロイメントの紹介

1. Dockerをインストールするまず Linux 環境を開き、次のコマンドを入力してインストール...

React+Typescriptはカウントダウンフックメソッドを実装します

まず、setIntervalはフックとしてカプセル化されます👇 'react' から...

vueプロジェクトのマルチ環境設定(.env)の実装

目次マルチ環境構成とは何ですか? また、なぜそれが必要なのですか? .env ファイルはどこで設定さ...

iframe を使用して Web ページに天気の影響を表示します

CS: ...コードをコピーコードは次のとおりです。 *{マージン:0;パディング:0;リストスタイ...

HTML+SassはHambergurMenu(ハンバーガーメニュー)を実装します

先日、外国人の方がHTML+CSSを使ってHamburgerMenuを実装している動画を見ました。最...

Vue プロジェクトにおけるトランジション コンポーネントの適用の概要

​Vue のトランジションは、アニメーション トランジションをカプセル化するコンポーネントです。一般...

Vue3 の動的コンポーネントはどのように機能しますか?

目次1. コンポーネントの登録1.1 グローバル登録1.2 グローバルコンポーネントの登録プロセス1...

Vueプロジェクトでvuexを使用する方法

目次Vuex とは何ですか? Vuex 使用サイクル図私のストアディレクトリvuexの例の実装要約す...

要素のフォーム要素の使用の概要

フォーム要素はたくさんあります。簡単にまとめると、次のようになります。私のやり方では、主にテキスト ...

MySQL 8.0.18 安定版がリリースされました! 予想通りハッシュ結合が実装されました

MySQL 8.0.18 安定版 (GA) が昨日正式にリリースされ、Hash Join も期待通り...

ランダム点呼 Web ページを実装するための JavaScript

JavaScriptは、参考のためにランダムな点呼Webページを作成します。具体的な内容は次のとお...

MySQL 時間差関数 (TIMESTAMPDIFF、DATEDIFF)、日付変換計算関数 (date_add、day、date_format、str_to_date)

1. 時間差関数(TIMESTAMPDIFF、DATEDIFF) MySQLを使用して時間差を計算...

WeChatアプレット+mqtt、esp8266温度と湿度の読み取り実装方法

まず、 esp8266 は mqtt を通じてメッセージを公開し、WeChat アプレットは mqt...