/docker-entrypoint-initdb.d
ディレクトリへのスクリプトやSQLの自動実行は、MySQLコンテナが初めて起動されるときにのみ行われます。これはMySQLのデータディレクトリが初期化されていない状態、つまりデータベースがまだ作成されていないときに適用されます。
もし、以前にコンテナを起動してデータベースを初期化した後で、再び同じコンテナを起動しても、このディレクトリ内のスクリプトやSQLは再実行されません。
1.以前にコンテナ起動したことがある場合(で、正常にスクリプトやSQLが正しく実行されない時)
(1)コンテナとボリュームを停止・削除
docker-compose down -v
※このコマンドは、docker-composeで定義されたコンテナを停止・削除するとともに、-v
オプションを使って関連するボリュームも削除します。この操作により、MySQLデータベースが完全にリセットされます。
(2)再びコンテナを起動
docker-compose up
※このコマンドで、MySQLコンテナが再度起動され、データベースが初期化される際に、/docker-entrypoint-initdb.d
ディレクトリ内のスクリプトやSQLが実行されるはずです。
2.今回がコンテナ起動初回である場合(で、正常にスクリプトやSQLが正しく実行されない時)
また、上記を行っても、やはりスクリプトやSQLの自動実行が、正常に行われない場合は、(スクリプトやSQLの)シェル内容に問題がある可能性があります。この場合は以下の別記事をご覧下さい。
・別記事「[基礎知識]「docker-entrypoint-initdb.d」について」
・別記事「[基礎知識]Dockerコンテナ内で、shファイル実行時に、改行コードに関するエラーが表示された場合の対処方法」
・別記事「[基礎知識]SQL実行シェルのパスワード設定について」