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


24

docker-compose run参照は、それが持っていると述べている--rmのオプションを

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

run指定する一部のサービスのデフォルトの動作にしたいdocker-compose.yml

したがって、質問は次のとおりです。

  1. なんとか指定できますdocker-compose.ymlか?
  2. できれば、どうすればいいですか?

INB4 "Use bash aliases、Luke!":もちろんdocker-compose.ymlbashエイリアスを次のように設定alias docker-compose-run='docker-compose run --rm'することでこれを強制することができますがdocker-compose.yml、何らかの外部的な方法ではなく、正確にそれを強制する方法に興味があります。)

回答:


10

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-portsフラグを指定します

docker-compose rm -f

-f、-force削除の確認を求めない


8

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.