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

スポンサーリンク

はじめに

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

構築する環境

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

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

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

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

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

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

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

Cloud Native Buildpacksについてざっくり理解する
はじめにCloud Native Buildpacksについてざっくり解説し、実際に使ってどんなことができるか試してみたいと思います。Cloud Native BuildpacksとはCloud Native Buildpacksとは、アプ...
【Cloud Native Buildpacks】Paketoでjavaアプリをビルドしてみる
はじめにCloud Native Buildpacksを実現する一つであるPaketo Buildpacksを使ってjavaアプリのビルドをしてみます。Cloud Native Buildpacksについては、下記でざっくり解説しています。...

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

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

docker-compose.yaml 作成

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

version: "3"
services:
  spring-boot:
    image: spring-boot-sample-api
    ports:
      - "8080:8080"
  mysql:
    image: mysql:8.0
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: mysql
      MYSQL_DATABASE: db
      MYSQL_USER: spring-boot-user
      MYSQL_PASSWORD: password
    volumes:
      - ./mysql/db:/var/lib/mysql
    restart: always

コンテナ起動

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

docker compose up -d

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

docker container ls
❯ docker container ls
CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS          PORTS                               NAMES
0ea8c571b2fc   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
94deae710248   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 のコンテナに入ってみます。

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

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

mysql -u spring-boot-user -p

参考

タイトルとURLをコピーしました