Le altre risposte a riavviare un singolo nodo sono sul bersaglio, docker-compose restart worker
. Ciò farà rimbalzare quel contenitore, ma non includerà alcuna modifica, anche se lo ricostruirai separatamente. È possibile manualmente stop
, rm
, create
, e start
, ma ci sono metodi molto più facile.
Se hai aggiornato il codice, puoi creare e ricaricare in un solo passaggio con:
docker-compose up --detach --build
Ciò ricostruirà prima le immagini da qualsiasi codice modificato, il che è veloce se non ci sono modifiche poiché la cache viene riutilizzata. E quindi sostituisce solo i contenitori modificati. Se le immagini scaricate sono obsolete, puoi precedere il comando sopra con:
docker-compose pull
Per scaricare prima le immagini modificate (i contenitori non verranno riavviati fino a quando non si esegue un comando come up
sopra). Fare una sosta iniziale non è necessario.
E per farlo solo per un singolo servizio, segui il comando up o pull con i servizi che vuoi specificare, ad es .:
docker-compose up --detach --build worker
Ecco un breve esempio della prima opzione, il Dockerfile è strutturato per mantenere le parti del codice che cambiano frequentemente verso la fine. In effetti i requisiti vengono inseriti separatamente per il pip install
fatto che quel file cambia raramente. E poiché i contenitori nginx e redis erano aggiornati, non sono stati riavviati. Il tempo totale per l'intero processo è stato inferiore a 6 secondi:
$ 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