Inne odpowiedzi na ponowne uruchomienie pojedynczego węzła są na celu, docker-compose restart worker
. Spowoduje to odbicie tego kontenera, ale nie spowoduje żadnych zmian, nawet jeśli przebudujesz go osobno. Można ręcznie stop
, rm
, create
, i start
, ale są znacznie łatwiejsze sposoby.
Jeśli zaktualizowałeś kod, możesz wykonać kompilację i przeładować w jednym kroku za pomocą:
docker-compose up --detach --build
To najpierw odbuduje obrazy z dowolnego zmienionego kodu, co jest szybkie, jeśli nie ma żadnych zmian od ponownego użycia pamięci podręcznej. A następnie zastępuje tylko zmienione pojemniki. Jeśli pobrane obrazy są nieaktualne, możesz poprzedzić powyższe polecenie:
docker-compose pull
Aby najpierw pobrać zmienione obrazy (pojemniki nie zostaną ponownie uruchomione, dopóki nie uruchomisz polecenia takiego jak up
powyżej). Wykonanie pierwszego zatrzymania nie jest konieczne.
Aby to zrobić tylko w przypadku pojedynczej usługi, wykonaj polecenie w górę lub w dół, używając usług, które chcesz określić, np .:
docker-compose up --detach --build worker
Oto szybki przykład pierwszej opcji, Dockerfile ma strukturę, która utrzymuje często zmieniające się części kodu pod koniec. W rzeczywistości wymagania są pobierane osobno, pip install
ponieważ plik ten rzadko się zmienia. A ponieważ kontenery nginx i redis były aktualne, nie zostały ponownie uruchomione. Całkowity czas całego procesu wynosił poniżej 6 sekund:
$ 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