2017-07-12 5 views
0

Wir haben eine Multi-Container-Anwendung, die eine microservices Architektur verwendet und in Docker Compose ausgeführt wird.Bereitstellen eines neuen Images im Docker-Stapel ohne Ausfallzeiten erstellen

Wenn ich beispielsweise Codeänderungen an der Webanwendung vornahm, musste ich das Image mit neuem Code neu erstellen und dann in meinem Compose Stack ohne Downtime erneut ausführen.

Hier ist die aktuelle Folge von Ereignissen, die wir verwenden:

  1. Änderungen an App-Code
  2. Bild neu aufbauen
  3. Push-Bild (Nabe Andockfenster)
  4. docker-compose down
  5. docker-compose up

Nach unter docker-compose down laufen alle Apps aus. Dann bringt docker-compose up den ganzen Stapel zurück.

Gibt es eine Möglichkeit, einzelne Bilder in Docker Compose ohne Ausfallzeiten erneut bereitzustellen und ohne den gesamten Anwendungsstapel herunterzufahren?

+0

Warum die downvote? – grizzthedj

Antwort

0

können Sie vermeiden alles zur gleichen Zeit legen (docker-compose down), nur mit etwas wie folgt aus:

docker-compose pull --parallel 
docker-compose up --force-recreate <specific-service-name1> 

Diese & Anschlag & recreate ziehen wird (run) Ihre <specific-service-name1> Container und wird nicht Berühren Sie einen anderen Behälter.
Später können Sie den Rest bereitstellen:

docker-compose up --force-recreate <specific-service-name2> 
docker-compose up --force-recreate <specific-service-name3> 
+0

Leider gibt es immer noch einige Ausfallzeiten beim erneuten Erstellen des Containers. Wenn ich die Replikate für alle Dienste in Compose auf> 1 erhöhe, gibt es dann eine Möglichkeit, auf rollierende Weise zu "--force-receate" zu komponieren, um die Ausfallzeit zu eliminieren? – grizzthedj

+0

Es scheint durchaus möglich, aber mit "Docker Service". * Das Flag --update-delay konfiguriert die Zeitverzögerung zwischen Aktualisierungen einer Service-Aufgabe oder einer Reihe von Aufgaben * https://docs.docker.com/engine/swarm/warm-tutorial/rolling-update/ – Robert

Verwandte Themen