MySQL on Docker で MySQL init process failed.
September 16, 2019
$ docker-compose up
...
mysql_1 | MySQL init process in progress...
mysql_1 | MySQL init process in progress...
mysql_1 | MySQL init process in progress...
mysql_1 | MySQL init process in progress...
mysql_1 | MySQL init process in progress...
mysql_1 | MySQL init process failed.
以前、環境変数 MYSQL_HOST
が悪さをするバグがあったらしいけど既に解消済みらしい。
- [https://github.com/docker-library/mysql/issues/82:title]
開発時にいちいちホストOS からパスワードを入力してログインするのが面倒で /etc/mysql/conf.d/mylogin.cnf
にこんな設定を書いていた
[client]
password="pass"
MySQL コンテナの初期化時に [client]
が書かれていると init process filad.
で落ちるのは既知の問題らしい(まぁそりゃそうだ)
- [https://github.com/docker-library/mysql/issues/251:title]
- [https://github.com/docker-library/mysql/issues/82:title]
パスワードを簡単にするのでもいいけど、~/.my.cnf
は初期化プロセスに関係しないらしいので置き場所を変えてやればいい。root なのはご愛嬌
$ git diff docker-compose.yml
diff --git a/docker-compose.yml b/docker-compose.yml
index 1d974da..b09d973 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -32,7 +32,7 @@ services:
TZ: Asia/Tokyo
volumes:
- .:/project:delegated
- - ./docker/mysql/conf.d/mylogin.cnf:/etc/mysql/conf.d/mylogin.cnf
+ - ./docker/mysql/my.cnf:/root/.my.cnf
- ./docker/mysql/initdb.d:/docker-entrypoint-initdb.d
- mysql:/var/lib/mysql
security_opt:
データボリュームの初期化はこう
docker-compose down --volumes mysql
init process するスクリプトの本体はこの辺 [https://github.com/docker-library/mysql/blob/333935aa6612376d58737a8cab0e3f5df370585a/8.0/docker-entrypoint.sh:embed:cite]
他にもタイムアウト伸ばしたら?とか、メモリ足りないんじゃない?とかいう話もある
- [https://github.com/docker-library/mysql/issues/251#issuecomment-414799052:title]
- [https://github.com/docker-library/mysql/issues/82#issuecomment-204200553:title]