はじめに
この記事では、既に作成されたSpring BootアプリケーションをDockerコンテナで動かす手順について説明します。Dockerは軽量で柔軟性のあるコンテナプラットフォームで、開発から運用に至るまでのワークフローを簡素化し、一貫性を保つことができます。
この記事の目的は、Spring BootアプリケーションをDockerコンテナでどのように動かすか、具体的な手順を通じて理解を深めることです。記事の終わりまでには、Dockerコンテナ内でSpring Bootアプリケーションを正常に動作させることができるようになることを目指しています。
必要なツールと環境
この記事では、Spring BootアプリケーションをDockerコンテナで動かすための基本的なツールと環境について説明します。具体的には、以下のものが必要となります。
Java
Spring BootはJavaベースのフレームワークなので、Javaの環境が必要です。この記事では、Java 17を前提としています。もしまだJavaをインストールしていない場合は、公式サイトまたは適切なパッケージマネージャを使用してインストールしてください。
Spring Boot
Spring BootはJavaでWebアプリケーションを構築するためのフレームワークです。この記事では、Spring Boot 2.7.11を前提としています。Spring Bootのプロジェクトは、Spring Initializrを使用して簡単に作成することができます。
Docker
Dockerはアプリケーションをパッケージ化し、他のマシンで同じ環境を再現するためのプラットフォームです。この記事では、Docker 20.10を前提としています。もしまだDockerをインストールしていない場合は、公式サイトからダウンロードしてインストールしてください。
Gradle
GradleはJavaプロジェクトのビルドツールです。Spring Bootプロジェクトのビルドと、JARファイルの生成に使用します。Gradleはプロジェクトに組み込まれているため、特別にインストールする必要はありません。
SpringBootにコントローラを作成
コンテナでアプリケーションを起動した際の動作確認を行うため、簡単なコントローラを作成します。内容は以下の通りで、今回は/src/main/java/com/template/controller/SampleController.java
にファイルを作成しています。
package com.template.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SampleController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
Dockerfileの作成
DockerコンテナでSpring Bootアプリケーションを実行するためには、Dockerfileを作成する必要があります。Dockerfileは、Dockerイメージの作成手順を定義したテキストファイルです。このセクションでは、Dockerfileの記述方法について説明します。
Dockerfileとは
Dockerfileは、Dockerイメージの作成手順を記述したテキストファイルです。Dockerfileには、ベースとなるイメージの指定、必要なソフトウェアのインストール、環境変数の設定、アプリケーションのコピー、ポートの公開、実行コマンドなど、イメージ作成に必要な手順が記述されます。
Dockerfileの記述
Spring Bootアプリケーション用のDockerfileの内容は以下の通りです。ファイルはプロジェクトルーとに配置されています。
# ベースイメージの指定
FROM openjdk:17
# ワーキングディレクトリの設定
WORKDIR /app
# アプリケーションのJARファイルをコンテナにコピー
COPY build/libs/*.jar app.jar
# ポートの公開
EXPOSE 8080
# アプリケーションの実行コマンド
ENTRYPOINT ["java", "-jar", "app.jar"]
このDockerfileでは、openjdk:17
イメージをベースにしています。ワーキングディレクトリを/app
に設定し、ビルド済みのJARファイルをコンテナにコピーしています。また、ポート8080
を公開し、エントリポイントとしてアプリケーションの実行コマンドを設定しています。
これでDockerfileの作成が完了しました。
Dockerイメージのビルド
Dockerfileが作成できたら、次はDockerイメージをビルドします。Gradleを使用してアプリケーションをビルドし、Dockerコマンドを使用してDockerイメージをビルドします。
まず、Gradleでアプリケーションをビルドします。以下のコマンドを実行してください。
./gradlew clean build
これで以前のビルドで生成した内容を削除し、クリーンな状態からビルドしてjarファイルを生成します。
次に、DockerコマンドでDockerイメージをビルドします。以下のコマンドを実行してください。今回はイメージのタグをspring-container-sample
としています。
docker build -t spring-container-sample .
これでDockerイメージのビルドが完了しました。docker imagesコマンドを使用して、ビルドされたイメージを確認することができます。こちらのdockerコマンドの具体的な内容は、以下の通りです。
-
build
:Dockerイメージをビルドするよう指示 -
-t spring-container-sample
:ビルドされるDockerイメージにspring-container-sample
というタグ(名前)を付ける -
.
:Dockerビルドコンテキストの場所(Dockerfileへの相対パス)
Dockerコンテナの操作
Dockerイメージが作成できたら、次はDockerコンテナの操作方法について説明します。
Dockerコンテナの起動
以下のコマンドでDockerコンテナを起動します。
docker run -d -p 8080:8080 --name spring-container-sample spring-container-sample
この状態でhttp://localhost:8080/hello
にアクセスするとHello, World!
と表示されるはずです。
Dockerコンテナの停止
以下のコマンドでDockerコンテナを停止します。
docker stop spring-container-sample
Dockerコンテナの再起動
以下のコマンドでDockerコンテナを再起動します。
docker restart spring-container-sample
まとめ
この記事では、Spring BootアプリケーションをDockerコンテナで動かす手順について説明しました。Dockerfileの作成、Dockerイメージのビルド、Dockerコンテナの操作という基本的なステップを通じて、Dockerを使用してSpring Bootアプリケーションを動かす方法を学びました。
Dockerを使用することで、開発環境から本番環境まで一貫した環境を提供し、アプリケーションのデプロイを簡単に行うことができます。これからもDockerの活用を通じて、より効率的な開発ワークフローを追求していきましょう。