Flask, Gunicorn và Docker Swarm


7

Vì vậy, tôi có API nghỉ ngơi tốt đẹp này được triển khai trong Flask chạy trong docker và tôi đang suy nghĩ về việc nhân rộng. Đây là cách tôi đã tiến bộ:

CMD ["flask", "run", "--host=0.0.0.0"]

docker run -d -p 5000:5000 pyrest-alpine

hoạt động tốt

CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "pyrest:app"]

docker run -d -p 5000:5000 pyrest-alpine

Điều này cũng hoạt động tốt, Gunicorn cung cấp một số tỷ lệ thông qua mô hình công nhân prefork trong một container duy nhất bây giờ tôi muốn mở rộng quy mô thông qua sao chép bầy Docker với các kiểm tra sức khỏe trong đó cả hai

CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "pyrest:app"]

CMD ["flask", "run", "--host=0.0.0.0"]

làm việc tốt với

docker service create --name pyrest-swarm --replicas 2 -p 5000:5000 --health-interval=2s --health-timeout=10s --health-retries=3--health-cmd "curl 0.0.0.0:5000/status || exit 1" pyrest-alpine

Câu hỏi của tôi là Tôi vẫn sử dụng gunicorn khi sử dụng sao chép bầy docker?

Câu trả lời:


2

Có, khi sử dụng Docker Swarm, bạn vẫn muốn sử dụng Gunicorn trong các thùng chứa Docker của mình.

Gunicorn là cần thiết để tạo điều kiện giao tiếp giữa máy chủ và ứng dụng web của bạn. Trong trường hợp ứng dụng Dockerized Flask, đây vẫn là trường hợp vì Gunicorn xử lý giao tiếp giữa ứng dụng Flask và container Docker. Thêm Docker Swarm vào ngăn xếp này về cơ bản chỉ có nghĩa là bạn có nhiều phiên bản chứa hơn và Swarm sẽ xử lý việc cân bằng các yêu cầu đến cho mỗi phiên bản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.