Другие ответы на перезапуск одного узла находятся на цели, docker-compose restart worker
. Это отразит этот контейнер, но не будет включать никаких изменений, даже если вы перестроили его отдельно. Вы можете вручную stop
, rm
, create
и start
, но есть гораздо проще метода.
Если вы обновили свой код, вы можете выполнить сборку и перезагрузку за один шаг:
docker-compose up --detach --build
Это сначала восстановит ваши изображения из любого измененного кода, что быстро, если нет изменений, так как кэш используется повторно. И тогда он только заменяет измененные контейнеры. Если ваши загруженные изображения устарели, вы можете добавить команду выше:
docker-compose pull
Сначала загрузите любые измененные изображения (контейнеры не будут перезапущены, пока вы не выполните команду, подобную приведенной up
выше). Делать начальную остановку не нужно.
И чтобы сделать это только для одного сервиса, выполните команду up или pull с сервисами, которые вы хотите указать, например:
docker-compose up --detach --build worker
Вот краткий пример первого варианта, Dockerfile структурирован так, чтобы часто изменяющиеся части кода оставались ближе к концу. Фактически требования выдвигаются отдельно, pip install
поскольку этот файл редко изменяется. И поскольку контейнеры nginx и redis были обновлены, они не были перезапущены. Общее время на весь процесс составило менее 6 секунд:
$ 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