docker compose cpコマンドでホスト・コンテナ間のファイルコピーする

どうも、にしむらです。

docker-composeにはコンテナとのファイルコピーをするコマンドが無いので、 docker cpコマンドを使っていたのですが docker compose にはコピーコマンド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

インゲージではエンジニアを募集しています!

ingage.co.jp