Las otras respuestas a reiniciar un solo nodo dan en el blanco, docker-compose restart worker
. Eso hará rebotar ese contenedor, pero no incluirá ningún cambio, incluso si lo reconstruyó por separado. Puede manualmente stop
, rm
, create
, ystart
, pero hay métodos mucho más fácil.
Si ha actualizado su código, puede hacer la compilación y la recarga en un solo paso con:
docker-compose up --detach --build
Eso reconstruirá primero sus imágenes a partir de cualquier código modificado, lo que es rápido si no hay cambios, ya que la memoria caché se reutiliza. Y luego solo reemplaza los contenedores modificados. Si las imágenes descargadas son obsoletas, puede preceder el comando anterior con:
docker-compose pull
Para descargar cualquier imagen modificada primero (los contenedores no se reiniciarán hasta que ejecute un comando como el up
anterior). Hacer una parada inicial es innecesario.
Y para hacer esto solo para un solo servicio, siga el comando up o pull con los servicios que desea especificar, por ejemplo:
docker-compose up --detach --build worker
Aquí hay un ejemplo rápido de la primera opción, el Dockerfile está estructurado para mantener las partes del código que cambian con frecuencia cerca del final. De hecho, los requisitos se aplican por separado pip install
ya que ese archivo rara vez cambia. Y como los contenedores nginx y redis estaban actualizados, no se reiniciaron. El tiempo total para todo el proceso fue inferior a 6 segundos:
$ 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