DockerのMySQLコンテナに初期データを投入したいが、うまくデータが入らない。
開発環境
・OS : Windows10
・MySQL5.6
ディレクトリ
├docker-compose.yml
├docker
└mysql
├my.cnf
├Dockerfile
└initdb.d
└sample.sql
docker-comopse.yaml
mysql:
platform: linux/x86_64
build:
context: ./docker/mysql
dockerfile: Dockerfile
volumes:
- db-data:/var/lib/mysql
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/mysql/initdb.d:/docker-entrypoint-initdb.d
environment:
- MYSQL_ROOT_PASSWORD=estest
- MYSQL_DATABASE=test
- MYSQL_USER=testuser
- MYSQL_PASSWORD=test
問題点
コンテナを削除してもボリュームは残ってしまうため。
→ボリュームを削除する
解決方法
①コンテナを停止
docker-compose down --volume
②ボリューム確認
docker volume ls
参考:ボリュームを一括削除するときのコマンド
docker volume rm $(docker volume ls -qf dangling=true)
③コンテナ実行
docker-compose up -d --build
これでsample.sqlが実行され、MySQLの初期データが入っていた。
最後に
私はそもそものデータベースの中身が不適切な文法でエラーをはいていたせいで、この問題の解消に時間がかかてしまった。初歩的なミスに十分注意すれば特に問題なくすぐに解消できると思う。