Docker,SpringBoot,MySQLを使用した開発環境の構築
参考にしたサイトはページの一番下にまとめております。
個人環境
- macOS Monterey / バージョン12.0.1
- Spring Boot 2.7.7
- IDE Eclipse
- openJDK11
- Maven3.8.6
- MySQL8.0.31
- Docker Desktop 4.15.0
プロジェクト構成
手順
-
docker desktopインストール
-
ワークスペース、MySQLフォルダ、settingフォルダ、各ファイルの作成(プロジェクト構成を参照)
docker-compose.yaml
version: "3" //このcomposeファイルの書式バージョン
services: //サービスを定義する項目
spring-boot:
build:
context: ./docker-practice //カレントディレクトリから相対パスで表記
dockerfile: Dockerfile
ports:
- "8080:8080" //ポート番号 ホスト:コンテナ
depends_on:
mysql:
condition: service_started
entrypoint: "java -jar /ファイル名/ファイル名.jar"
networks:
- app-net
mysql:
build:
context: ./mysql //カレントディレクトリから相対パスで表記
dockerfile: Dockerfile
ports:
- "3306:3306" //MySQLのポート番号 ホスト:コンテナ
volumes:
- ./mysql/data/:/var/lib/mysql/ //データ永続化のため,ホスト:コンテナのパスを指定
environment:
MYSQL_DATABASE: データベース名
MYSQL_ROOT_PASSWORD: パスワード
networks:
- app-net
networks:
app-net:
driver: bridge
- settingフォルダ直下に配置
setting.cnf
[mysqld]
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4
- Dockerファイルの作成
Dockerfileの「f」は小文字
拡張子なしで作成
Dockerfile(Springプロジェクト直下)
FROM maven:3.8.6-jdk-11 AS builder
WORKDIR /tmp
COPY ./src ./src
COPY ./pom.xml .
RUN mvn package
FROM openjdk:11
COPY --from=builder /tmp/target/ファイル名.jar /ファイル名/ファイル名.jar
EXPOSE 8080
Dockerfile(MySQLフォルダ直下)
FROM mysql:8.0.31
EXPOSE 3306
自分の開発環境に合わせてプロジェクトを作成(Spring Initiarizr使用)
今回は「docker-practice」という名前で作成しています
Spring initializr : https://start.spring.io/
- pom.xml、application.propertiesの編集
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<finalName>ファイル名</finalName> //jarファイル名と合わせるために追加
</build>
application.properties
spring.datasource.url=jdbc:mysql://mysql:3306/データベース名
spring.datasource.username=データベースユーザー名
spring.datasource.password=パスワード
spring.jpa.hibernate.ddl-auto=update
- 動作確認
workspaceのあるディレクトリまで移動し、下記コマンド実行
sudo docker-compose up -d
遭遇したエラー
- MySQLのバージョンを5から8に更新したところ、docker上で起動した際5のままであった
→MySQLサーバーの再起動が必要
//サーバーの停止コマンド
mysql.server stop
//サーバーの再起動コマンド
mysql.server start
- 下記エラーメッセージが出現
java: class file has wrong version,数値 should be 数値
→SpringBootとJDKのバージョンが合っていない
参考
- Docker desktop インストール
https://hub.docker.com/ - フォルダ,ファイル構成
https://qiita.com/daisuke30x/items/a3ea62ff8fa582b2b065
https://qiita.com/takuch/items/e5ab6e51b2be0743abc8 - MySQLエラー解消
https://qiita.com/banaoh/items/1eb5dc6c4805a4490e08 - SpringBootとJDKバージョンについて
https://docs.spring.io/spring-framework/docs/5.3.24/reference/html/overview.html#overview
https://stackoverflow.com/questions/74648576/java-class-file-has-wrong-version-61-0-should-be-55-0/74714149