dockerで起動したmysqlに対して、SQLファイルを流す方法について
ローカルのmysqlコマンドで実行
普通はdockerのport 3306をexposeして、ローカルのMySQLコマンドから実行すれば良い
mysql -u root -p < hoge.sql
なのだが、これができないケースでどうするか
docker execで実行
何があってもローカルの環境を一切汚したくないマン、またはサーバにmysqlクライアントをインストールできなくて困ってるマン向けの方法。
docker exec -it コンテナID mysql -u root -pパスワード < hoge.sql
docker execではstdin経由のデータ入力とプロンプトからのパスワードを入力を同時にできないので、コマンドラインで直接パスワードを指定しなくてはならない。
docker-composeコマンドからstdinを流し込む方法は現状ないのでdockerコマンドを使うしかない。コンテナIDは以下のコマンドで調べられる
docker-compose ps -q サービス名