docker-compose run --rm終了時に他のコンテナも削除する
docker-compose run --rm app
を実行するとサービスappが起動してコンテナが作られ、実行が終わり次第コンテナは削除される。
このとき削除されるコンテナはforegroundで実行されたもののみで、
depends_on
などの設定からリンクを通じて起動した他サービスのdetachedコンテナは削除されず残り続ける。
このissueでlinked containers を同時に削除する機能について議論されているが、
run
コマンドにオプションを増やしたくない、ということで却下されている。
As mentioned in this thread, docker-compose rm -f --all and docker-compose down already allow cleaning up a project's containers / resources. We won't overload run with more options at that point.
ひとまずdocker-compose run
終了後にdocker-compose down
を実行するシェルスクリプトで対応する。
compose_run.sh
#!/bin/bashdocker-compose run --rm "$@"EXIT_CODE=$?docker-compose downexit $EXIT_CODE