🖥️
M1 macでも利用できるmysqlイメージを使ってMySQL環境を作成
これはなに
DBの挙動を確認する時、よくローカルでMySQLのコンテナを利用していたけど、M1 macに変えてからうまく行かなくなった。今後もローカルでMySQLを利用する機会はあるのでM1 mac, Intel mac双方で利用できるイメージで環境構築を用意してみた。
自分が使いやすいような設定も一緒に行っているので、備忘録として書いておく。
Docker Desctop
- version 4.4.2
MySQLイメージ
このイメージがlinux/amd64
, linux/arm64
それぞれのplatformに対応しているので、どちらのmacでも利用できる。
docker-compose.yml
./docker-compose.yml
version: '3'
services:
db:
image: mysql:8.0-oracle
restart: always
environment:
TZ: Asia/Tokyo
MYSQL_ROOT_PASSWORD: password
volumes:
- db_data:/var/lib/mysql
- ./initdb.d:/docker-entrypoint-initdb.d
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
ports:
- '3306:3306'
volumes:
db_data:
initdb.d/init.sql
DB初期化時に実行したいSQL。
利用するときはプログラムからDBの操作を行なうので、rootアカウントを利用するのではなく
tester
アカウントを作成した。
./initdb.d/init.sql
CREATE DATABASE IF NOT EXISTS sample DEFAULT character set utf8;
CREATE USER 'tester'@'%' IDENTIFIED WITH caching_sha2_password BY 'tester';
GRANT ALL PRIVILEGES ON *.* TO 'tester'@'%';
コンテナを立ち上げる
docker-compose.yml
, initdb.d/init.sql
が準備できたら早速コンテナを立ち上げてみる。
$ docker compose up -d
# 別のterminalから
$ docker compose exec db mysql -utester -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.28 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
無事、テストアカウントでDBに入ることが出来た。
おわり
M1 mac / Intel mac 両方で想定した通りにSQLも実行され問題なく動いてることを確認。
使いたかったプログラムのマイグレーションも実際に行ったが問題なかった。
Discussion