laradockを使ってmysqlのデータベースを作成しても、なぜか作成されない
laradockを使い始めることにしました。使い方はまた別記事で書きます。
その中で、微妙なハマり方をしたので、備忘として記事にしておきます。
現象
mysqlのデータベースを設定してdocker-compose up -d mysql
しても、データベースが作成されない。
まず手順はこう。
- laradockを
git clone
する env-sample
をコピーして.env
を作成する.env
にmysqlの設定をする(データベース名やユーザ名)docker-compose up -d mysql
でコンテナを起動する
コンテナに入ってDB確認しても、.env
で設定したデータベースが出来ていません。。。
docker-compose exec mysql bash mysql -u root -p password: # mysqlのrootパスワードを入力 mysql> show databases;
試行錯誤
- mysqlコンテナの再作成(
docker rm
で削除して、docker-compose up -d mysql
) - mysqlコンテナのリビルド(`docker-compose up -d --build mysql)
- mysqlイメージの再作成(
docker rmi
でイメージ削除して、docker-compose up -d mysql
) - 環境の再構築(laradockを
rm -rf
して、git clone
からやり直し)
解決しませーん。
原因というか結論
1度試しに.env
を変更する前にmysqlコンテナを起動しており、その時のデータベースが永続化されていて新しくデータベースが作成されなかった、でした。
mysqlコンテナのデータベースファイルはホスト側のボリュームをマウントしています。具体的には.env
のDATA_SAVE_PATH=/.laradock/data
ってとこです。要するに、コンテナをいくら再作成しようが、1回作ったデータベースが永続化されていて再作成されません。
もちろん、この設定(仕様)は開発時にデータベースが初期化されない為に、絶対に必要なものなのですが、こちらのレベルが低すぎて認識できていませんでした。dockerのことも知らないと、ハマってしまう部分もあるんですね。
という、試行錯誤の中で同様にハマる人も1万人に1人はいるんじゃないかなぁ〜という事例でした。
新品価格 |