docker-compose run
est un indicateur --rm
automatique supprime le conteneur après le rodage. Je me demande si il y a un équivalent config avec docker-composer.yml pour un service spécifique, comme l'un des services que je suis en yml est un processus de construction qui devrait juste sortie de la compilation de fichiers et de disparaître lui-même.
Réponses
Trop de publicités?Je n'ai pas trouvé d'option pour vous aider à définir ce comportement dans l' docker-compose.yml
le fichier et je pense que l'explication est la suivante:
docker-compose up
construit, (re)crée, démarre et s'attache à conteneurs pour un service.
Depuis votre images
sont construits et l' containers
de votre service ont commencé, vous pouvez ensuite utiliser docker-compose stop
et docker-compose start
pour démarrer/arrêter votre service. Cela est différent de l' docker-compose down
qui:
Arrête de conteneurs et supprime les conteneurs, les réseaux, les volumes, et les images créées par
up
.
Problème avec ce que vous essayez de faire:
Si vous docker-compose up
et l'un de vos conteneurs termine sa tâche et obtient (auto)supprimé, alors vous ne pouvez pas docker-compose stop
et docker-compose start
de nouveau. Enlever le conteneur ne sera pas là pour start
de nouveau.
Vous voudrez peut-être jeter un oeil à:
Ma solution a été de créer un petit script bash qui supprime automatiquement les conteneurs après - Il ne fonctionne pas avec le mode détaché, mais je suppose que cela pourrait ne pas être un gros problème.
Si vous êtes sur mac os, vous pouvez mettre ce script en usr/local/bin
. En supposant que c'est nommée d-c
, vous pouvez ensuite exécuter chmod +x usr/local/bin/d-c
de le rendre exécutable.
Sur Windows, je n'ai aucune idée de comment le faire fonctionner, mais sur Linux, il devrait être semblable.
#! /bin/bash
if [[ $1 == "up" ]]; then
# runs "docker-compose up" and then "docker-compose down"
docker-compose up "${@:2}"; docker-compose down
elif [[ $1 == "run" ]]; then
# "d-c run" automatically adds the --rm flag
docker-compose run --rm "${@:2}"
else
# any other d-c command runs docker-compose normally
docker-compose "${@:1}"
fi
Je ne suis pas sûr de comprendre, docker-composer exécuter --utilisateur est une option, et le docker-composer.yml prend en charge la clé utilisateur (http://docs.docker.com/compose/yml/#working95dir-entrypoint-user-hostname-domainname-mem95limit-privileged-restart-stdin95open-tty-cpu95shares).