M1 MacでmysqlをDockerコンテナで作り、外部接続する方法について。
- 2022.06.05
- IT
前回一番シンプルなWebアプリを作ったわけですが、これではシンプルすぎるので、
データベースを繋げていきます。
そのような中で、M1 Mac特有のエラーも起きたので、それについても書いていきます。
目次
結論
M1 Macを使う場合は、platformにlinux/x86_64を追記する。
Githubにコードを上げているので、手っ取り早く試したい方は、こちらをどうぞ!
ディレクトリ構成と解説
├── db_test
│ ├── db
│ │ ├── Dockerfile
│ │ └── mysql.conf.d
│ │ └── mysqld.cnf
│ └── docker-compose.yaml
└── readme.md
mysqlを使うキモとしては、mysql.conf.d/mysqld.cnfファイルを自前で作るという点です。
m1 macでmysqlコンテナを作る際のキモとしては、Dockerfileにプラットフォームを追記する点です。
以下でそれぞれを解説していきます。
mysql.conf.d/mysqld.cnfファイルについて
mysqlを普段使う人にとっては当たり前かもしれませんが、このファイルは自前で作る必要があります。
ネットの記事を見ると、これは自前で作るべきなのか分からなかったので…。
今回はDBのデータに日本語を使う予定もあるので、その情報を下記のように記載しました。
1 2 3 4 5 |
[mysqld] character-set-server=utf8mb4 // mysqldの最後に追加 [client] default-character-set=utf8mb4 // clientのセクションそのものを追加 |
Dockerfileにプラットフォームを追記する点について
m1 macの場合は、CPUがなんなのかを記載する必要があります。
どこでも動くことがコンテナの良さなので、この辺も吸収して欲しいところですが…
下記のように–platform=linux/x86_64と指定してあげます。
1 2 3 |
FROM --platform=linux/x86_64 mysql:8.0 # M1 Macなので、platformの指定をしています。Intelチップの方は、FROM mysql:8.0でOKかと思われます。 COPY ./mysql.conf.d /etc/mysql/mysql.conf.d |
実際に使ってみる。
1. db_testのディレクトリに移動します.
2. 起動コマンドを叩く
1 |
docker-compose up -d |
3. mysqlにログインしてみる。
この時、hostはLocalhostと記述するとNGっぽいです。
1 |
mysql --host=127.0.0.1 --user=root --password=password --port=3306 |
これで
mysql
と出たら成功です。