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/bash
docker-compose run --rm "$@"
EXIT_CODE=$?
docker-compose down
exit $EXIT_CODE