created: 2021-06-01T03:05:18.000Z

docker-compose でデバッグ用のボリュームマウントを行う

プロジェクトのローカル開発に docker-compose を使っているとして、個人的なデバッグや動作検証で使うためのディスク領域を作りたい時のメモ。

Docker では --mount オプションでホストOSとDocker上のファイルシステムで共用できるディスクを作れるが、docker-compose exec コマンドにはそのようなオプションがない。(いちおう docker run には --volume オプションが存在するようだ)

docker-compose.override.yml

オプションで指定できないので docker-compose.yml で指定することになるが、複数人で開発しているプロジェクトなので個人的なデバッグ用のコードをさし挟むことはできない。 docker-compose.override.yml を使うことになる。

version: '3'
services:
  rfp:
    volumes:
      - type: bind
        source: /var/tmp/audio
        target: /hostos/audio

volumes オプションは配列であるが、overrideファイルで定義すると append したような挙動になってくれる。

その他

docker-compose コマンドは未知のオプションをつけると、エラーを出力せず、またリターンコードも0でプロセスが終了する。 docker-compose exec--mount オプションをつけて実行していたときは「よくわからないがコマンドが実行されない」という状態になり少し戸惑った。

$ docker-compose exec \
>     --mount \
>         type=bind \
>         src=/var/tmp/audio \
>         dst=/hostos/audio \
>     app carton exec perl tools/,/_.pl
$ echo $?
0

参考