112 votes

docker-compose monter/descendre un seul conteneur

Je n'ai pas réussi à trouver un moyen de monter/descendre un seul conteneur dans un fichier docker-compose.yml. Je peux bien sûr démarrer et arrêter un seul conteneur, mais je ne peux pas modifier la configuration d'un conteneur entre les redémarrages (variables d'environnement, points de montage, etc.).

Qu'est-ce que je rate ici ? Quelle est la meilleure pratique dans ce cas ?

141voto

Jordan Morris Points 1366

J'ai trouvé que cela avait le même effet que docker-compose down pour un seul service :

docker-compose rm -s -v yourService

docker-compose rm

Utilisation : rm [options] [SERVICE...]

Options :
-s, --stop Arrêtez les conteneurs, si nécessaire, avant de les retirer.
-v Supprimer tous les volumes anonymes attachés aux conteneurs

Vous pouvez condenser tous les drapeaux en un seul - param : docker-compose rm -sv yourService

53voto

liammclennan Points 3535

Je vous suggère d'aller voir cet excellent fil de discussion sur stackoverflow.com. La réponse rapide ici est de reconstruire le conteneur unique et de le redémarrer :

docker-compose up -d --build worker

Ce serait la solution idéale si, par exemple, vos modifications concernaient votre Dockerfile et pas seulement docker-compose.ymll.

12voto

John K Points 1992

Vous pouvez utiliser

$ docker-compose -f docker-compose.yml up yourService

pour démarrer uniquement votreService et toutes les dépendances dont il a besoin.

Donc si votreService dépend du conteneur mysql, la commande ci-dessus démarrera les deux conteneurs.

5voto

Jonny Points 11

J'ai eu ce besoin récemment et je l'ai résolu en créant une section séparée. docker-compose-production.yml pour gérer les modifications. Ensuite, n'oubliez pas de lancer avec docker-compose -f docker-compose-production.yml...

5voto

Iman Points 21

Pour ce qui est de la façon dont les autres montrent le démarrage et l'arrêt des conteneurs, voici comment vous pouvez les redémarrer et les arrêter séparément :

pour redémarrer un conteneur spécifique :
docker-compose restart <container_name>
docker-compose restart -t 10 <container_name> # Container will restart after 10 seconds

pour seulement juste arrêter le conteneur :
docker-compose stop <container_name>
docker-compose stop -t 10 <container_name> # Container will restart after 10

et le dernier mot est pour ceux qui veulent faire des changements sans temps d'arrêt, vous pouvez construire une nouvelle image et faire des changements sans aucun arrêt de démarrage avec cette commande mais il va construire tous les Dockerfile dans le fichier docker-compose.yml :
docker-compose up -d --build

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X