目次
- Spring Boot プロジェクト作成
- Spring InitializrやIDEで基本プロジェクトを作る。
- アプリをローカルで動かす
- Spring Bootがちゃんと起動するか確認。
- Dockerfile を作成
- Spring Bootアプリをコンテナ化するための設定を書く。
- Dockerイメージをビルド&ローカルで動作確認
- docker build と docker run で動くかテスト。
- 必要なら docker-compose.yml 作成
- 複数コンテナや連携を扱いたい場合。
Spring Bootでプロジェクト作成
- https://start.spring.io/にアクセス
- Project:Maven
- Language:Java
- Spring Bootバージョンは最新安定板推奨(例:3.x系)
- Group:com.example
- Artifact:demo
- Dependenciesに「Spring Webを追加」(API用)
- 「Generate」を押してzipをダウンロード、展開する
ローカルで起動確認
./mvnw spring-boot:run
Dockerfileを作成
# 1. ベースイメージは OpenJDK 17 のJRE(軽量版)
FROM eclipse-temurin:17-jre-jammy
# 2. 作業ディレクトリを作る
WORKDIR /app
# 3. ビルド済みのjarファイルをコンテナにコピー
COPY target/demo-0.0.1-SNAPSHOT.jar app.jar
# 4. ポート8080を開放
EXPOSE 8080
# 5. アプリを起動するコマンド
ENTRYPOINT ["java","-jar","app.jar"]
作成手順
- Spring Bootプロジェクトのルートで./mvnw package を実行してjarファイルを作成。
- target/demo-0.0.1-SNAPSHOT.jarが生成される
- プロジェクトルートの上にDockerfileを作成
- Dockerイメージをビルドする
docker build -t springboot-demo .
- ローカルでコンテナを起動する
docker run -p 8080:8080 springboot-demo
- ブラウザで http://localhost:8080 にアクセスして、APIや画面が動くか確認しよう!
ルートに一工夫したいい場合は:プロジェクト名\demo\src\main\java\com\example\demo\DemoApplication.javaを修正
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping("/")
public String hello(){
return "<h1>Hello Spring Boot!!!!!</h1>";
}
}
Hello Spring Boot!!!!!と表示
必要なら docker-compose.yml 作成
コンテナをまとめて動かしたい場合や複数のコンテナを管理する場合は利用を推奨する。
services:
web:
image: openjdk:17
container_name: spring_container
command : ./mvnw spring-boot:run
ports:
- "8080:8080"
volumes:
- ./demo:/demo
working_dir: /demo