As outras respostas para reiniciar um único nó estão no destino docker-compose restart worker
,. Isso devolverá esse contêiner, mas não incluirá alterações, mesmo que você o tenha reconstruído separadamente. Você pode manualmente stop
, rm
, create
, e start
, mas há muito mais fácil métodos.
Se você atualizou seu código, pode criar e recarregar em uma única etapa com:
docker-compose up --detach --build
Isso reconstruirá suas imagens primeiro a partir de qualquer código alterado, o que é rápido se não houver alterações desde a reutilização do cache. E então substitui apenas os contêineres alterados. Se as imagens baixadas estiverem obsoletas, você poderá preceder o comando acima com:
docker-compose pull
Para baixar as imagens alteradas primeiro (os contêineres não serão reiniciados até que você execute um comando como o up
acima). Fazer uma parada inicial é desnecessário.
E para fazer isso apenas em um único serviço, siga o comando up ou pull com os serviços que você deseja especificar, por exemplo:
docker-compose up --detach --build worker
Aqui está um exemplo rápido da primeira opção, o Dockerfile é estruturado para manter as partes do código que mudam frequentemente no final. De fato, os requisitos são extraídos separadamente, pip install
pois esse arquivo raramente muda. E como os contêineres nginx e redis estavam atualizados, eles não foram reiniciados. O tempo total para todo o processo foi 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