【Java】Docker ComposeでSpring Boot + MySQL環境を構築

2023.05.07
2024.03.24
Docker

本ページはAmazonアフィリエイトのリンクを含みます。

はじめに

Docker Compose で Spring Boot のアプリと MySQL を動かす環境を構築していきます。

構築する環境

今回動かすコンテナは下記の 2 つになります。

  • Spring Boot のアプリケーション
  • MySQL

用意するファイルとディレクトリ構造は下記の通りです。今回は Spring Boot のソースコードについての紹介は省略させていただきます。

1.
2├── docker-compose.yaml
3├── mysql # MySQLのデータ
4└── spring-boot-sample-api # Spring Bootのアプリケーション

Spring Boot アプリのイメージ作成

Spring Boot のアプリケーションのイメージは Cloud Native Buildpacks で作成します。

Cloud Native Buildpacks については下記を参考にしてください。

unknown link unknown link

下記のコマンドでイメージのビルドをします。

1pack build {image name} -p {path} --builder paketobuildpacks/builder:base
1pack build spring-boot-sample-api -p spring-boot-sample-api --builder paketobuildpacks/builder:base

docker-compose.yaml 作成

docker-compose.yamlを作成します。spring-boot コンテナと mysql コンテナを定義します。また、MySQL のユーザーやパスワードは環境変数で定義しています。

1version: "3"
2services:
3  spring-boot:
4    image: spring-boot-sample-api
5    ports:
6      - "8080:8080"
7  mysql:
8    image: mysql:8.0
9    ports:
10      - "3306:3306"
11    environment:
12      MYSQL_ROOT_PASSWORD: mysql
13      MYSQL_DATABASE: db
14      MYSQL_USER: spring-boot-user
15      MYSQL_PASSWORD: password
16    volumes:
17      - ./mysql/db:/var/lib/mysql
18    restart: always

コンテナ起動

Spring Boot のイメージとdocker-compose.yamlが作成できたら、Docker Compose でコンテナを起動します。

1docker compose up -d

起動したコンテナを確認してみます。

1docker container ls
1docker container ls
2CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS          PORTS                               NAMES
30ea8c571b2fc   mysql:8.0                "docker-entrypoint.s…"   13 seconds ago   Up 11 seconds   0.0.0.0:3306->3306/tcp, 33060/tcp   spring-boot-sample-api-mysql-1
494deae710248   spring-boot-sample-api   "/cnb/process/web"       13 seconds ago   Up 11 seconds   0.0.0.0:8080->8080/tcp              spring-boot-sample-api-spring-boot-1

MySQL の接続確認

とりあえず、MySQL のコンテナに入ってみます。

1docker container exec -it {container name} bash
1docker container exec -it spring-boot-sample-api-mysql-1 bash
2bash-4.4#

環境変数で定義したユーザーで MySQL に接続できます。

1mysql -u spring-boot-user -p

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee