所以我在docker中运行的Flask中实现了这个不错的rest API,我正在考虑扩展。这是我的进度:

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




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


工作正常

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




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


这也很好,Gunicorn在单个容器中通过prefork worker模型提供了一些缩放,现在我要缩放通过带有健康检查的Docker群复制,其中

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




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



正常工作/>
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


我的问题是,在使用docker swarm复制时是否仍使用gunicorn?

#1 楼

是的,在使用Docker Swarm时,您仍将在您的Docker容器中使用Gunicorn。

Gunicorn对于促进服务器与Web应用程序之间的通信十分必要。对于Docker化的Flask应用程序,情况仍然如此,因为Gunicorn处理Flask应用程序与Docker容器之间的通信。将Docker Swarm添加到此堆栈基本上仅意味着您具有更多的容器实例,并且Swarm将处理平衡对每个实例的传入请求。