Các câu trả lời khác để khởi động lại một nút là trên mục tiêu , docker-compose restart worker
. Điều đó sẽ trả lại container đó, nhưng không bao gồm bất kỳ thay đổi nào, ngay cả khi bạn xây dựng lại nó một cách riêng biệt. Bạn có thể tự stop
, rm
, create
, và start
, nhưng có một phương pháp dễ dàng hơn nhiều.
Nếu bạn đã cập nhật mã của mình, bạn có thể thực hiện quá trình xây dựng và tải lại trong một bước duy nhất với:
docker-compose up --detach --build
Điều đó trước tiên sẽ xây dựng lại hình ảnh của bạn từ bất kỳ mã thay đổi nào, nhanh chóng nếu không có thay đổi kể từ khi bộ đệm được sử dụng lại. Và sau đó nó chỉ thay thế các container đã thay đổi. Nếu hình ảnh đã tải xuống của bạn cũ, bạn có thể đặt trước lệnh trên với:
docker-compose pull
Để tải xuống bất kỳ hình ảnh thay đổi nào trước tiên (các thùng chứa sẽ không được khởi động lại cho đến khi bạn chạy một lệnh như up
trên). Làm một điểm dừng ban đầu là không cần thiết.
Và để chỉ làm điều này cho một dịch vụ duy nhất, hãy làm theo lệnh lên hoặc kéo với các dịch vụ bạn muốn chỉ định, ví dụ:
docker-compose up --detach --build worker
Đây là một ví dụ nhanh về tùy chọn đầu tiên, Dockerfile được cấu trúc để giữ cho các phần thường xuyên thay đổi của mã gần cuối. Trong thực tế, các yêu cầu được kéo riêng rẽ pip install
vì tệp đó hiếm khi thay đổi. Và vì các thùng chứa nginx và redis đã được cập nhật, chúng không được khởi động lại. Tổng thời gian cho toàn bộ quá trình dưới 6 giây:
$ 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