Closed4
VSCode DevContainerで構築されたCompose環境のDBコンテナにデカめのダンプをインポートしたい

VSCodeのDevContainerを使っているときのお話。
デカ目のDBダンプをDBコンテナに入ってインポートしようとしてましたよ、と。
ただVSCodeのDevContainer、新しいターミナルを開くときは、.devcontainer.jsonのservice
に設定されたコンテナで開かれてしまい、DBコンテナを開いてくれない。
設定ファイルの仕様を見ると、設定上1devcontainer.jsonに複数指定できないぽく、アクセスする手段がない状態になっている。これをなんとかしたい。

起動中のコンテナに入る方法はすごく単純で、docker ps
して得たコンテナIDに対して、docker exec -it {containerID} /bin/sh
とすればいい。そうすれば指定したコマンドを起動した状態でコンテナ内にはいることができる。
これはDevContainerを経由して起動された場合も同様。

つまり、でかいDumpファイルをDevContainerで起動したDBコンテナに入れてインポートしたい場合は下記の手順で実現できる
-
docker cp {ファイルパス} {containerId}:{ファイルパス}
でコンテナ内にコピー -
docker exec -it {containerId} /bin/sh
でコンテナ内に入る mysql -u{user} -p {database名} < {ファイル名}

Dumpを出力したものが必ずしも外部キーの依存関係順になっていないことがある。
その場合
mysql -u{user} -p --init-command="SET SESSION FOREIGN_KEY_CHECKS=0;" {database} < {file}
と、外部キーのチェックを無効化する必要がある
このスクラップは2023/05/23にクローズされました