DockerでSpring+MySQLの環境を構築してみる(Windows)
目次
開発環境
- OS:Windows11
- Docker Desktopインストール済み
- VSCodeインストール済み
アプリケーションの定義ファイル(YAML)作成
type nul > docker-compose.yml下記の内容で編集。
services:
app:
build: .
ports:
- "8080:8080"
command: mvn spring-boot:run
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/odaneko
SPRING_DATASOURCE_USERNAME: odaneko
SPRING_DATASOURCE_PASSWORD: odaneko
db:
image: mysql:8.4
environment:
MYSQL_ROOT_PASSWORD: odaneko
MYSQL_DATABASE: odaneko
MYSQL_USER: odaneko
MYSQL_PASSWORD: odaneko
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
Dockerファイル作成
type nul > Dockerfile下記の内容で編集。
FROM maven:3.9-eclipse-temurin-21 AS build
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests
FROM eclipse-temurin:21-jre
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
dockerignore作成
type nul > .dockerignore下記の内容で編集。
target
.git
.idea
.vscode
テンプレート作成
下記の公式ページでテンプレートを作成します。
| 項目 | 設定値 |
|---|---|
| Project | Maven |
| Language | Java |
| Spring Boot | 初期選択のもの |
| Project Metadata Group | 初期のまま |
| Project Metadata Artifact | odaneko(任意) |
| Project Metadata Package name | 自動 |
| Project Metadata Packaging | Jar |
| Project Metadata Configuration | Properties |
| Dependecies | Spring Web |
| MySQL Driver |
各項目を設定後、「GENERATE」をクリック。
解凍後、中身をプロジェクトフォルダにコピペ。


pom.xml編集
pom.xmlの<dependencies>の最後に下記を追記。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
application.properties編集
下記を追記。
spring.datasource.url=${SPRING_DATASOURCE_URL}
spring.datasource.username=${SPRING_DATASOURCE_USERNAME}
spring.datasource.password=${SPRING_DATASOURCE_PASSWORD}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
コンテナビルド・起動
docker compose up -d --build
コントローラー作成
mkdir src\main\java\com\example\odaneko\controllerni src\main\java\com\example\odaneko\controller\HelloController.java下記の内容で編集。
DBにアクセスして1を取得するだけのAPIを作成。
package com.example.odaneko.controller;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
private final JdbcTemplate jdbcTemplate;
public HelloController(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
@GetMapping("/")
public Integer db_test() {
Integer result = jdbcTemplate.queryForObject(
"SELECT 1",
Integer.class
);
return result;
}
}
コンテナ再ビルド・起動
コンテナ停止
docker compose downコンテナビルド・起動
docker compose up -d --build環境が構築できたか確認
下記にアクセス。
http://localhost:8080/
1が返ってくればOK。

以上になります。
お読み頂き、ありがとうございました。

