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

推薦する

vuex で履歴を実装するためのサンプルコード

私は最近、ユーザー操作を元に戻す、またはやり直す機能を備えたビジュアル操作プラットフォームを開発して...

WeChatアプレットでグローバル変数を監視する方法

最近、仕事で問題に遭遇しました。グローバル変数 red_heart があります。これは多くの場所で使...

Tomcat および Web アプリケーションの Docker デプロイメントの実装

1.dockerをオンラインでダウンロードする yum インストール -y epel-release...

CSS+JS で水滴の波紋アニメーション ボタン効果を実装するサンプル コード

コードは次のようになります。 <!DOCTYPE html> <html lang...

Vue スキャフォールディング学習プロジェクト作成方法

1. 足場とは何ですか? 1. Vue CLI Vue CLI は、Vue.js をベースにした迅速...

Vue: メモリリークの詳細な説明

メモリリークとは何ですか?メモリ リークとは、新しいメモリが作成されたが、解放またはガベージ コレ...

border-radiusは要素に丸い境界線を追加する方法です

border-radius:10px; /* すべての角は半径 10px で丸められます*/ bor...

DockerにTensorFlow環境を素早くインストールする方法

Docker に TensorFlow 環境をすばやくインストールし、TensorFlow を使用し...

既存のDockerコンテナの内容を変更する方法

1. Docker psはコンテナをリストします 2. Docker cpはコンテナにファイルをコピ...

WeChatアプレットが9マスグリッド効果を実現

この記事では、WeChatアプレットの9マスグリッド効果を実現するための具体的なコードを参考までに紹...

WeChatアプレットに2048ミニゲームを実装する詳細なプロセス

レンダリング サンプルコード今日は、WeChat アプレットを使用して 2048 ゲームを実装します...

Linux での grep コマンドの使い方の詳細な説明

1. 公式紹介grep は Linux でよく使用されるコマンドです。これは、ファイルやテキストに対...

vue3+TypeScript+vue-routerの使い方

目次使いやすいプロジェクトを作成するvue-cli 作成ヴィートクリエイションvue-routerを...

MySQL テーブルとデータベースでデータを分割する方法

目次1. 縦方向のスライス1.1 垂直データベース1.2 垂直テーブル分割2. 水平(横断)セグメン...

Win10+Ubuntu 20.04 LTS デュアル システム インストール (UEFI + GPT) (画像とテキスト、複数の画像には注意)

Win10 のインストール (すでにインストールされている場合はスキップしてください) win10...