Est-ce que quelqu'un sait s'il existe un moyen de demander à Docker Swarm de redémarrer un service faisant partie d'une pile sans redémarrer toute la pile?
Faire à nouveau docker stack deploy
pour moi est la voie à suivre pour mettre à jour les services. Comme Réponse de François , et aussi selon ma propre expérience, cela ne met à jour que les services qui doivent être mis à jour.
Mais parfois, il semble plus facile, lors des tests, de ne redémarrer qu’un seul service. Dans mon cas, je devais effacer le volume et mettre à jour le service pour le démarrer comme si de rien n'était. Je ne suis pas sûr s'il y a des inconvénients à la méthode que je vais décrire. Je l'ai testé sur ma pile de développement et cela a très bien fonctionné pour moi.
Obtenez le numéro de service que vous souhaitez supprimer, puis utilisez docker service update --force <id>
pour forcer la mise à jour du service qui le redéployera effectivement.
$ docker stack services <stack_name>
ID NAME ...
3xrdy2c7pfm3 stack-name_api ...
$ docker service update --force 3xrdy2c7pfm3
L’indicateur --force
oblige le service à se mettre à jour et le redémarre.
Échelle à 0 et sauvegarde:
docker service scale myservice=0
docker service scale myservice=10
En regardant la documentation docker stack
:
Description détaillée
Créer et mettre à jour une pile à partir d'un fichier de composition ou d'un fichier DAB sur l'essaim
De cet article de blog : _docker stack
_ fonctionne de la même manière que _docker compose
_. C’est idempotent . Si la pile est déjà déployée, _docker stack deploy
_ redémarre uniquement les services dont le condensé ou la balise est mis à jour:
D'après mon expérience, lorsque je déploie à nouveau la même pile avec un service en train de changer, , seul le service mis à jour sera redémarré .
MAIS ... il semble y avoir certaines limitations aux modifications prises en compte (certains signalent bogues avec des balises d'image ) Essayez donc de voir si cela fonctionne comme prévu.
Vous pouvez également utiliser service update
si vous voulez être sûr que seul le service ciblé est mis à jour avec vos modifications.