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