Інші відповіді на перезапуск одного вузла знаходяться на цілі, docker-compose restart worker
. Це відмовиться від цього контейнера, але не буде містити жодних змін, навіть якщо ви його переобладнали окремо. Ви можете вручну stop
, rm
, create
і start
, але є набагато простіше методу.
Якщо ви оновили свій код, ви можете виконати збірку та перезавантаження в один крок за допомогою:
docker-compose up --detach --build
Це спочатку відновить ваші зображення з будь-якого зміненого коду, що швидко, якщо не буде змін, оскільки кеш використовується повторно. І тоді він лише замінює змінені контейнери. Якщо завантажені зображення нерівні, ви можете передувати вищевказаній команді:
docker-compose pull
Щоб завантажити спочатку будь-які змінені зображення (контейнери не буде перезапущено, доки не запустите команду, як up
описано вище). Робити початкову зупинку зайве.
І щоб зробити це лише для однієї послуги, виконайте команду "вгору" або "витягнення" за допомогою служб, які ви хочете вказати, наприклад:
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