dockerコンテナに入ってmysqlファイルをdumpする方法
dockerを使っている状況で、
「このsql手元でdumpして使って〜」
と言われた際に、どうやってやればいいのか分からなかったのでメモ。
- dockerコンテナのなかにsqlファイルを
cp
する
プロジェクト内に一旦sqlファイルをおいておく。あるいは適当なフォルダのpathを記述して、copyする。copyする先は対象のdbコンテナのtmpディレクトリ内が良さげ。
$ docker cp test.sql container-name:/tmp
- db名を調べておく
$ docker-compose exec db mysql -uroot -ppassword mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | hoge_dev_1 | <=これがdb名 | hoge_test_1 | | mysql | | performance_schema | | sys | +--------------------+
- コンテナのなかに入ってshで作業する
$ docker exec -it container-name sh $ # ls bin boot dev docker-entrypoint-initdb.d entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var $ ls tmp/ hoge.sql $ cd tmp $ mysql -u root -p hoge_dev_1 < hoge.sql