爆速!Docker×SpringBoot×IntelliJで開発環境を構築する完全ガイド

DockerでSpringbootの開発環境を構築する(InteliJ IDEA編)

目次

開発環境構築に時間と手間がかかっていませんか?チームメンバー間で環境差異に悩まされたり、新しいプロジェクトのたびにセットアップで躓いたり…。本記事では、DockerとSpring Boot、そしてIntelliJ IDEAを組み合わせることで、誰もが手軽に、そして一貫性の高い開発環境を構築する具体的な手順を徹底解説します。環境構築の悩みを解消し、より本質的な開発に集中できる環境を手に入れましょう!

Docker + Spring Boot開発環境のメリット

従来の開発環境では、OSやライブラリのバージョン差異、依存関係の問題などで、プロジェクトごとに環境を構築する手間が課題でした。しかし、Dockerを活用することで、開発環境をコンテナ化し、誰でも同じ環境を素早く再現できるようになります。特にJavaのWebアプリケーションフレームワークであるSpring Bootとの組み合わせは強力です。

エンジニア

Dockerを使えば、「私の環境では動くのに!」なんて言い訳はもう通用しませんね。開発チーム全体の生産性がグッと向上しますよ。

デザイナー

それは素晴らしいですね!環境構築で待たされる時間が減るなら、他の作業に集中できます。

必要なツールの準備

まずは、本記事を進めるにあたって必要となるツールを準備しましょう。

Docker Desktopのインストール

Dockerコンテナを管理するために、Docker Desktopをインストールします。お使いのOS(Windows, macOS)に合わせて、以下の公式サイトからダウンロードしてインストールしてください。

インストール後、ターミナルで以下のコマンドを実行し、Dockerが正しく動作することを確認しましょう。

docker version
docker compose version

両方のコマンドでバージョン情報が表示されればOKです。

IntelliJ IDEAの準備

Java開発では定番のIDEであるIntelliJ IDEA Community Edition(無料版)またはUltimate Edition(有料版)をインストールしてください。

Spring Bootプロジェクトの作成

次に、Docker上で動作させるSpring Bootアプリケーションのひな形を作成します。

Spring Initializrでプロジェクトを生成

WebブラウザからSpring Initializrにアクセスし、プロジェクトの設定を行います。

以下の設定例を参考に、必要な依存関係(Dependencies)を追加してください。

  • Project: Maven Project (または Gradle Project)
  • Language: Java
  • Spring Boot: 最新の安定版(例: 3.x.x)
  • Group: com.example
  • Artifact: demo
  • Dependencies: Spring Web, Spring Boot DevTools (任意)
エンジニア

今回は最小構成ですが、プロジェクトの要件に応じてデータベース接続ドライバ(例: H2 Database, MySQL Driver)なども追加してください。

Generateボタンをクリックしてプロジェクトをダウンロードし、任意のディレクトリに展開します。

IntelliJ IDEAでプロジェクトを開く

ダウンロードしたプロジェクトをIntelliJ IDEAで開きます。pom.xml (Mavenの場合) または build.gradle (Gradleの場合) を選択してインポートしてください。
プロジェクトを開いたら、src/main/java/com/example/demo/DemoApplication.java に簡単なRESTエンドポイントを追加してみましょう。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController // ★追加
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/") // ★追加
    public String hello() { // ★追加
        return "Hello from Spring Boot in Docker!"; // ★追加
    }
}

Dockerfileとdocker-compose.ymlの準備

Spring Bootアプリケーションをコンテナ化するための設定ファイルを作成します。

Dockerfileの作成

プロジェクトのルートディレクトリにDockerfileという名前でファイルを作成し、以下の内容を記述します。

# ベースイメージとしてAdoptOpenJDKの最新LTS版(Java 17)を使用
FROM adoptopenjdk/openjdk17:latest

# 作業ディレクトリを設定
WORKDIR /app

# Mavenのビルド時に必要なファイルをコピー
# pom.xmlとプロジェクトソースコードを分離することで、
# pom.xmlに変更がない限り、依存関係のレイヤーをキャッシュできる
COPY pom.xml .
COPY src ./src

# Mavenビルドを実行し、jarファイルを生成
# -Dmaven.test.skip=true: テストをスキップ
# -Dspring-boot.repackage.skip=true: Spring Bootのrepackageをスキップ(後で再構築するため)
RUN ./mvnw clean package -Dmaven.test.skip=true -Dspring-boot.repackage.skip=true

# Spring BootアプリケーションのJARファイルをコピー
# targetディレクトリ内に生成されるJARファイル名はプロジェクト名-バージョン.jarとなる
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar

# コンテナ起動時に実行するコマンド(Spring Bootアプリケーションの実行)
ENTRYPOINT ["java","-jar","/app.jar"]

このDockerfileは、Javaアプリケーションのビルドと実行に必要な手順を定義しています。AdoptOpenJDKをベースに、Mavenでビルドし、最終的にapp.jarを実行する形です。

デザイナー

Dockerfileって、料理のレシピみたいですね。どんな材料(ベースイメージ)を使って、どんな手順(COPY, RUN)で、最終的に何を作るか(ENTRYPOINT)が書かれているんですね!

docker-compose.ymlの作成

複数のコンテナをまとめて管理するために、プロジェクトのルートディレクトリにdocker-compose.ymlを作成します。

version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    volumes:
      - ~/.m2:/root/.m2
    # Spring Boot DevTools有効時のライブリロード設定 (開発環境向け)
    # environment:
    #   - SPRING_DEVTOOLS_REMOTE_SECRET=YOUR_SECRET_KEY
    #   - SPRING_DEVTOOLS_REMOTE_DEBUG=true

このdocker-compose.ymlは、Dockerfileを使ってappサービスをビルドし、ホストマシンの8080ポートとコンテナの8080ポートをマッピングしています。これにより、ブラウザからlocalhost:8080でアプリケーションにアクセスできるようになります。volumesはMavenのキャッシュをホストと共有することで、ビルド時間の短縮に貢献します。

IntelliJ IDEAでDocker環境を連携・実行

IntelliJ IDEAから直接Dockerコンテナをビルド・実行できるように設定します。

Dockerプラグインの確認

IntelliJ IDEAの「Settings/Preferences」→「Plugins」で「Docker」プラグインが有効になっていることを確認してください。Ultimate Editionでは標準で含まれています。Community Editionでは別途インストールが必要な場合があります。

実行/デバッグ構成の作成

Runメニューから「Edit Configurations…」を選択し、「+」ボタンをクリックして「Docker」→「Docker Compose」を選択します。

以下の設定を行います。

  • Name: Docker Compose: app (任意の名前)
  • Configuration files: docker-compose.ymlへのパスを指定(プロジェクトルートにある場合、自動で検出されることが多いです)
  • Service: app を選択
  • Before launch: Buildステップでmvn clean packagegradle buildを追加し、最新のJARが作成されるようにします。
エンジニア

この設定で、IntelliJ IDEAの実行ボタンをクリックするだけで、DockerコンテナのビルドとSpring Bootアプリケーションの起動が自動的に行われるようになります。デバッグも同じように実行できますよ!

動作確認とデバッグ

すべての準備が整ったので、実際にアプリケーションを起動し、動作を確認しましょう。

アプリケーションの実行

IntelliJ IDEAのRunボタン(緑色の再生アイコン)をクリックします。ビルドとコンテナの起動が始まり、Consoleウィンドウにログが出力されます。

# コンテナ起動中のログ例
...
com.example.demo.DemoApplication     : Started DemoApplication in 4.xxx seconds (JVM running for 5.xxx)
...

Started DemoApplicationのログが出たら、Webブラウザを開いてhttp://localhost:8080/にアクセスしてください。
「Hello from Spring Boot in Docker!」と表示されれば成功です!

デバッグの活用

IntelliJ IDEAのDebugボタン(虫のアイコン)をクリックすると、アプリケーションがデバッグモードで起動します。コードにブレークポイントを設定し、ステップ実行や変数の監視を行うことで、問題の特定や機能の理解を深めることができます。

エンジニア

Dockerコンテナ内でデバッグできるのは非常に強力です。本番環境に近い状態でのデバッグが可能になり、開発効率が飛躍的に向上します。

まとめ

  • DockerとSpring Boot、IntelliJ IDEAを組み合わせることで、一貫性があり、素早く再現可能な開発環境を構築できます。
  • Docker Desktopのインストールから始め、Spring Initializrでプロジェクトのひな形を作成しました。
  • Dockerfileとdocker-compose.ymlを使って、アプリケーションのコンテナ化定義を行いました。
  • IntelliJ IDEAのDockerプラグインと実行/デバッグ構成を活用し、IDEから直接コンテナのビルド・実行・デバッグが可能になりました。
  • http://localhost:8080/にアクセスし、「Hello from Spring Boot in Docker!」が表示されることで、開発環境の構築と動作確認が完了しました。

本記事で紹介した手順を通じて、開発効率を格段に向上させるDockerized Spring Boot開発環境をぜひあなたのプロジェクトに導入してみてください。

ソースコード

https://github.com/isystk/java-springboot-boilerplate

コメントを残す

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。