2017-06-28 53 views

Odpowiedz

2

Patrząc na dokumentacji docker stack:

rozszerzony opis

Tworzenie i aktualizacja stos z Compose lub pliku zimnicy na rój

Od this blog article: docker stack działa w podobny sposób, co docker compose. Jest to idempotent. Jeśli stos jest już wdrożony, docker stack deploy zrestartuje tylko te usługi, która ma likwidacji lub znacznik, który jest aktualizowane:

docker stack process

Z mojego doświadczenia, kiedy wdrożyć ten sam stos ponownie jedna usługa zmieniając jedynie zaktualizowana usługa zostanie ponownie uruchomiona.

ALE ... nie wydaje się być pewne ograniczenia na zmiany, które są brane pod uwagę (jakiś raport bugs with image tags), więc spróbować i zobaczyć, czy działa zgodnie z oczekiwaniami.

Możesz także użyć service update, jeśli chcesz mieć pewność, że tylko ukierunkowana usługa zostanie zaktualizowana wraz z wprowadzonymi zmianami.

You can also refer to this similar SO QA.

+0

Dzięki, działa to zgodnie z oczekiwaniami. Właściwie zamierzam wymusić ponowne uruchomienie jednej konkretnej usługi (lub całego stosu) w sposób toczący. Niestety niektóre usługi, z którymi mam do czynienia, mają problem z unieważnieniem pamięci podręcznej i stwierdziliśmy, że musimy usunąć/ponownie wdrożyć na stosie, aby wymusić aktualizacje. Patrząc na dokumentację 'service update' mogłem dodać/usunąć zmienne' env', aby zmyślić je, jeśli nie ma wbudowanych. – tweeks200

+0

Szukałem tego samego - nie mogłem znaleźć żadnego w dokumentach. –

1

Ponownie dla mnie jest to sposób na aktualizację usług. Jako Francois' Answer, a także w moim własnym doświadczeniu, robi to aktualizuje tylko usługi, które wymagają aktualizacji.

Czasami wydaje się łatwiejsze, gdy testowanie sprzętu spowoduje ponowne uruchomienie tylko jednej usługi. W moim przypadku musiałem usunąć wolumin i zaktualizować usługę, aby rozpocząć, tak jak było świeże. Nie jestem pewien, czy jest jakiś minus metody, którą opiszę. Przetestowałem to na moim stosie programistycznym i zadziałało to dla mnie.

Pobierz identyfikator usługi, który chcesz zburzyć następnie użyć docker service update --force <id> wymusić aktualizację usługi, które skutecznie ponownego wdrożyć to

$ docker stack services <stack_name> 
ID     NAME    ... 
3xrdy2c7pfm3  stack-name_api ... 

$ docker service update --force 3xrdy2c7pfm3 

--force flag zmusi usługę aktualizacji powodując jej ponowne uruchomienie.