Die anderen Antworten zum Neustart eines einzelnen Knotens sind zielgerichtet docker-compose restart worker
. Dadurch wird dieser Container zurückgeworfen, es werden jedoch keine Änderungen vorgenommen, selbst wenn Sie ihn separat neu erstellt haben. Sie können manuell stop
, rm
, create
, undstart
, aber es gibt viel einfacher Methoden.
Wenn Sie Ihren Code aktualisiert haben, können Sie das Erstellen und Neuladen in einem einzigen Schritt durchführen mit:
docker-compose up --detach --build
Dadurch werden Ihre Bilder zunächst aus geändertem Code neu erstellt. Dies ist schnell, wenn seit der Wiederverwendung des Caches keine Änderungen vorgenommen wurden. Und dann ersetzt es nur die geänderten Container. Wenn Ihre heruntergeladenen Bilder veraltet sind, können Sie dem obigen Befehl Folgendes voranstellen:
docker-compose pull
Um zuerst geänderte Bilder herunterzuladen (die Container werden erst neu gestartet, wenn Sie einen Befehl wie up
oben ausführen ). Ein erster Stopp ist nicht erforderlich.
Um dies nur für einen einzelnen Dienst zu tun, folgen Sie dem Befehl up oder pull mit den Diensten, die Sie angeben möchten, z.
docker-compose up --detach --build worker
Hier ist ein kurzes Beispiel für die erste Option: Die Docker-Datei ist so strukturiert, dass die häufig wechselnden Teile des Codes am Ende bleiben. Tatsächlich werden die Anforderungen für die separat abgerufen, pip install
da sich diese Datei selten ändert. Und da die Nginx- und Redis-Container auf dem neuesten Stand waren, wurden sie nicht neu gestartet. Die Gesamtzeit für den gesamten Prozess betrug weniger als 6 Sekunden:
$ time docker-compose -f docker-compose.nginx-proxy.yml up --detach --build
Building counter
Step 1 : FROM python:2.7-alpine
---> fc479af56697
Step 2 : WORKDIR /app
---> Using cache
---> d04d0d6d98f1
Step 3 : ADD requirements.txt /app/requirements.txt
---> Using cache
---> 9c4e311f3f0c
Step 4 : RUN pip install -r requirements.txt
---> Using cache
---> 85b878795479
Step 5 : ADD . /app
---> 63e3d4e6b539
Removing intermediate container 9af53c35d8fe
Step 6 : EXPOSE 80
---> Running in a5b3d3f80cd4
---> 4ce3750610a9
Removing intermediate container a5b3d3f80cd4
Step 7 : CMD gunicorn app:app -b 0.0.0.0:80 --log-file - --access-logfile - --workers 4 --keep-alive 0
---> Running in 0d69957bda4c
---> d41ff1635cb7
Removing intermediate container 0d69957bda4c
Successfully built d41ff1635cb7
counter_nginx_1 is up-to-date
counter_redis_1 is up-to-date
Recreating counter_counter_1
real 0m5.959s
user 0m0.508s
sys 0m0.076s