【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をコピーしました