web-dev-qa-db-ja.com

docker-compose:docker-compose.ymlでの実行後にコンテナーを自動的に削除するオプション

_docker-compose run_ reference には、_--rm_オプションが

実行後にコンテナを削除します。

これを_docker-compose.yml_で指定する一部のサービスのデフォルトのrun動作にしたい。

だから、質問は

  1. _docker-compose.yml_で何らかの形で指定できますか?
  2. 可能であれば、どうすればよいですか?

INB4 "bashエイリアスを使用、Luke!":もちろん、_docker-compose.yml_の外で、_alias docker-compose-run='docker-compose run --rm'_ですが、何らかの特別な方法ではなく、_docker-compose.yml_を介してそれを正確に強制する方法に興味があります。)

26
Ivan Kolmychek

TLDR:それはまだ不可能です2018-11; docker-compose downまたはdocker-compose run --rmを使用

ほぼ3年後なので、この質問に対する更新された回答を提供したいと思います。これにより、他の人が検索する手間が省けます。

私は同じ質問をしました、そしてここに私が見つけた回避策があります(質問自体からのものを含む):

docker-compose down

これは次のことを行います。

コンテナーを停止し、upによって作成されたコンテナー、ネットワーク、ボリューム、およびイメージを削除します。

デフォルトでは、削除されるのは次のものだけです。

- Containers for services defined in the Compose file
- Networks defined in the networks section of the Compose file
- The default network, if one is used

外部として定義されたネットワークとボリュームは決して削除されません。

docker-compose.ymlで宣言することはできませんが、面倒なことはありません。特にボリュームとネットワークで。

docker-compose run --rm

--rm-実行後にコンテナを削除します。デタッチモードでは無視されます。

サービスに対して1回限りのコマンドを実行します。たとえば、次のコマンドはWebサービスを開始し、コマンドとしてbashを実行します。

docker-compose run web bash

[...] runによって渡されたコマンドは、service構成で定義されたコマンドを上書きします。

[...]コマンドは、サービス構成で指定されたポートを作成しません。これにより、すでに開いているポートとのポートの衝突が防止されます。 サービスのポートを作成し、ホストにマッピングする場合は、-service-portsを指定しますフラグ

docker-compose rm -f

-f、--force削除の確認を求めません

12
Moe Pad

これはDockerfileまたはdocker-compose.yml仕様の一部ではなく、runコマンドのcliオプションにすぎないため、答えは「いいえ」です。強制するには、外部の何かに依存する必要があります。

プロジェクトのビルドツールを入手した場合は、通常、docker-composeタスクをそれでラップするのが最善です。たとえば、私たちのgradleプロジェクトは、実行タスクに--rmのようないくつかのデフォルトオプションを設定するDocker関連タスクを提供します。

8
Erik Dannenberg