どうも、にしむらです。
docker-compose
にはコンテナとのファイルコピーをするコマンドが無いので、 docker cp
コマンドを使っていたのですが docker compose
にはコピーコマンドcp
がありました。
動作確認環境
Mac OS 11.6.5
Docker Desktop 4.8.1
コンテナからホストへのコピー
# docker compose cp [OPTIONS] SERVICE:SRC_PATH DEST_PATH # appコンテナの /app/log/development.log をホストのカレントにコピーする docker compose cp app:/app/log/developoment.log . # appコンテナの /app/log/development.log をホストのカレントの/tmp/log/にコピーする docker compose cp app:/app/log/ ./tmp/log/
ホストからコンテナへのコピー
# docker compose cp [OPTIONS] SRC_PATH SERVICE:DEST_PATH # カレントtmp/test.sqlをdbコンテナのルートディレクトリへコピーする docker compose cp ./tmp/test.sql db:/ # カレントtmp/sql/をdbコンテナのルートディレクトリへコピーする docker compsoe cp ./tmp/sql/ db:/sql/
コンテナのユーザー権限によってはパーミッションエラーになる場合があります。その場合はroot権限でコンテナに入って権限を変更する必要があります。
docker compose exec app -u root bash
インゲージではエンジニアを募集しています!