はじめに
M1 MacでMySQLコンテナ起動に少し苦労したので、記事にします。
つまづいた点
以下のコマンドでMySQLコンテナを起動しましたが、docker ps
では表示されず、docker ps -a
すると、STATUSがExited (2)
でした。
docker container run -d \
--platform linux/amd64 \
--network wp-net \
--name mysql \
--mount source=mysqlvolume,target=/var/lib/mysql \
--mount type=bind,source=/Users/{your_name}/mysqlbackup,target=/mysqlbackup \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wordpress \
-e MYSQL_PASSWORD=password \
mysql:5.7.28
-zsh /var/lib % docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
hogefugahoge mysql:5.7.28 "docker-entrypoint.s…" 5 seconds ago Exited (2) 4 seconds ago mysql
コンテナログを見ると以下のエラーが出てました。
2024-06-08 06:47:19+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.28-1debian9 started.
2024-06-08 06:47:20+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
runtime: failed to create new OS thread (have 2 already; errno=22)
fatal error: newosproc
解決方法
mysqlのバージョンを8系にします。
docker container run -d \
--platform linux/amd64 \
--network wp-net \
--name mysql \
--mount source=mysqlvolume,target=/var/lib/mysql \
--mount type=bind,source=/Users/{your_name}/mysqlbackup,target=/mysqlbackup \
-e MYSQL_ROOT_PASSWORD=password \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wordpress \
-e MYSQL_PASSWORD=password \
mysql:8.0.26
docker psで表示されるようになります。
-zsh /var/lib % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
hogefugahoge mysql:8.0.26 "docker-entrypoint.s…" 9 minutes ago Up 9 minutes 3306/tcp, 33060/tcp mysql
以上です。