LoginSignup
2
1

More than 1 year has passed since last update.

Docker × SpringBoot × MySQL 環境構築

Last updated at Posted at 2022-12-22

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

プロジェクト構成

ファイル構成.jpg


手順

  • 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のバージョンが合っていない

参考

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1