こんにちは。こまつです。
概要
サーバサイドのアプリ開発はDBにアクセスしながら進めると思いますが、ローカルにDBを立ててしまうと
「プロジェクト毎のDB管理が煩雑になる」「ローカル環境が汚れる」といった問題が起こります。
そのためdocker上にDBを起動するのがおすすめです。
マイグレーションSQLも一緒に管理すれば、テーブル再構成、データ復元も気軽に行えます。
ここではDocker設定とDB起動、IntelliJでのDB参照までやります。
前提
dockerの知識はここ
https://knowledge.sakura.ad.jp/13265/
docker desktopのインストールはここ
(mac)
https://matsuand.github.io/docs.docker.jp.onthefly/desktop/mac/install/
(windows)
https://matsuand.github.io/docs.docker.jp.onthefly/desktop/windows/install/
dockerファイルを作成する
必要なファイルは以下の3つ。
docker-compose.yaml
version: '3'
services:
mysql:
build: ./docker/mysql <- Dockerfileの位置
container_name: hello_springboot_kt_mysql <- コンテナ名。ユニークな名前をつけておいた方が管理しやすい
volumes:
- ./docker/mysql/conf.d/my.cnf:/etc/mysql/conf.d/my.cnf <- mysqlのconfig
ports:
- 3306:3306 <- ポート。DB複数起動する場合はそれぞれ別のポートを指定する
Dockerfile
FROM mysql:8 <- MYSQLのバージョン指定
ENV MYSQL_DATABASE testdb <- DB名
ENV MYSQL_USER mysql <- ユーザ名
ENV MYSQL_PASSWORD password <- パスワード
ENV MYSQL_ROOT_PASSWORD password <- ルートパスワード
CMD [ "mysqld" ] <- デーモン起動
MySQLの設定ファイル
[mysqld]
character-set-server=utf8mb4 <- 文字コード
collation-server=utf8mb4_bin
# time zone
default-time-zone = SYSTEM
# log_timestamps = SYSTEM
# default authentication plugin
default-authentication-plugin = mysql_native_password
[mysql]
default-character-set=utf8mb4 <- 文字コード
[client]
default-character-set=utf8mb4 <- 文字コード
具体的な配置場所は以下を参照ください
https://github.com/komkomh/HelloSpringBootKt
docker上にMySQLを起動する
起動コマンド
docker-compose up
接続してみる
お手持ちのDBクライアントから接続を確認ください。
以下、IntelliJでの接続確認手順になります。
「接続情報を入力する」 → 「Test Connection」 → (Succeededでたら) → 「OK」
まとめ
以上でDocker上にMySQLの構築、DBの参照までできました。
IntellJのDBクライアントは多機能のため開発効率が実感しやすいです。
※私はultimate使っているので確認できてないですが、無料版のIntelliJにDBクライアントなかったらすみません。
◾️開発時のDBはdockerで管理するのがいい