Le docker-compose run
référence indique qu'il a le --rm
option pour
Retirez le récipient après l'analyse.
Je veux en faire un comportement par défaut run
pour certains des services que je spécifie dans docker-compose.yml
.
Donc, les questions sont :
docker-compose.yml
?( INB4 "Utilisez des alias bash, Luke!" : Bien sûr, je peux appliquer cela en dehors de docker-compose.yml
en définissant un alias bash comme alias docker-compose-run='docker-compose run --rm'
mais je suis intéressé par la façon dont je peux appliquer cela exactement par docker-compose.yml
, pas d'une manière extrnale.)
TLDR: C'est toujours pas possible 2018-11 ; utilisation docker-compose down
ou docker-compose run --rm
Je veux donner une réponse mise à jour à cette question car c'est presque 3 ans plus tard. Cela permettra aux autres d'économiser de la recherche.
J'avais la même question et voici les solutions de contournement que j'ai trouvées (y compris celle de la question elle-même):
docker-compose down
qui fait ce qui suit:
Arrête les conteneurs et supprime les conteneurs, réseaux, volumes et images créés par up.
Par défaut, les seules choses supprimées sont:
- 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
Les réseaux et volumes définis comme externes ne sont jamais supprimés.
Bien que vous ne puissiez pas le déclarer dans docker-compose.yml
cela vous évitera des tracas; surtout avec les volumes et les réseaux.
docker-compose run --rm
--rm - Retirez le conteneur après l'exécution. Ignoré en mode détaché.
Exécute une commande unique sur un service. Par exemple, la commande suivante démarre le service Web et exécute bash comme sa commande.
docker-compose run web bash
[...] la commande passée par run remplace la commande définie dans la configuration du service .
[...] la commande ne crée aucun des ports spécifié dans la configuration du service. Cela empêche les collisions de ports avec des ports déjà ouverts. Si vous souhaitez que les ports du service soient créés et mappés sur l'hôte, spécifiez le - service-ports drapeau
docker-compose rm -f
-f, --force Ne pas demander de confirmer la suppression
Cela ne fait pas partie de Dockerfile
ou docker-compose.yml
spec, ce n'est qu'une option cli pour la commande run, donc la réponse est non. Vous devrez vous fier à quelque chose d'extérieur pour appliquer.
Si vous avez un outil de construction pour votre projet, il est généralement préférable d'envelopper les tâches de composition de docker avec cela. Par exemple, nos projets Gradle fournissent des tâches liées à Docker qui définissent certaines options par défaut comme --rm
pour les tâches d'exécution.