Dockerでのmysql利用時の注意
Dockerでmysqlを利用する際にはまったこと。 Dockerfile等で初期データを流し込みたい場合、mysqld_safeを「バックグラウンド」で起動しておいてmysqlコマンドで流しこみを行うのだが、 nohup mysqld_safe & mysql -u root < init.sql のように実行してしまうと、 mysqlサーバが起動する前にコマンドが帰ってきてしまうため2行目で「mysql.sockがない」という旨のエラーが返ってきてしまう。 このような場合、1行目の後に以下のようなループを噛ませるとうまく行くはず。(bashの場合) nohup mysqld_safe & for {1..10}; do if [ -e /var/lib/mysql/mysql.sock ]; then break fi sleep 1 done