なにもわからない

気分で技術系の雑記を書きます

MySQL on Docker で MySQL init process failed.

$ 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 が悪さをするバグがあったらしいけど既に解消済みらしい。

開発時にいちいちホストOS からパスワードを入力してログインするのが面倒で /etc/mysql/conf.d/mylogin.cnf にこんな設定を書いていた

[client]
password="pass"

MySQL コンテナの初期化時に [client] が書かれていると init process filad. で落ちるのは既知の問題らしい(まぁそりゃそうだ)

パスワードを簡単にするのでもいいけど、~/.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 するスクリプトの本体はこの辺 github.com

他にもタイムアウト伸ばしたら?とか、メモリ足りないんじゃない?とかいう話もある