DockerにMySQLのデータを入れたい
移行元DBからSQLダンプファイルをエクスポートする
mysqldumpする
移行(コピー)元のMySQLに接続できるサーバーなどでmysqldumpコマンドを実行しダンプを生成します。
mysqldump -u root -h DB_HOSTNAME.com -p database_name > dumpfile.sql
rootユーザのパスワードを入力
ローカルに転送
scp -i ~/.ssh/id_rsa ec2-user@123.45.67.89:~/dumpfile.sql dumpfile.sql
rootユーザのパスワードを入力
ダンプしたデータをMySQLコンテナに入れる
コンテナにコピー&インポート
Dockerコンテナの任意の場所(以下の例では/home)にダンプファイルを転送します。
docker cp dumpfile.sql mysql_containername:/home
コンテナにログインし、ダンプファイルを流し込みます。
docker exec -it mysql_container sh
# コンテナの/homeで
mysql -u root -p database_name < dumpfile.sql
ローカルから直接ダンプファイルをインポート
または、コンテナにコピーして流す代わりに以下のやりかたでもできます。
docker exec -t mysql_container mysql -u root -p database_name < dumpfile.sql
ただし、筆者の実践上はデータベースのレコードが膨大だと処理が停止することがありました。