docker + gunicorn + nginx需要supervisord吗?

时间:2016-08-02 13:42:06

标签: django docker gunicorn supervisord

我正在使用码头工具内的gunicorn运行django,我的码头工作点是:

CMD [“gunicorn”,“myapp.wsgi”]

假设已经有一个进程在系统启动时运行docker并在停止时重新启动docker容器,我是否还需要使用supervisord?如果gunicorn会崩溃,它会不会撞击码头,然后重新启动?

2 个答案:

答案 0 :(得分:10)

在Docker容器中唯一需要像supervisord(或其他进程管理程序)这样的东西,如果你需要在容器启动时启动容器内的多个独立进程。

例如,如果您需要在同一个容器中启动 nginx和gunicorn,则需要调查某种流程主管。但是,更常见的解决方案是将这两个服务放在两个单独的容器中。像docker-compose这样的工具可以帮助管理多容器应用程序。

如果由于主进程退出而导致容器退出,则如果您在首次启动时配置了重新启动策略(例如,通过docker run --restart=always ...),则Docker将重新启动该容器。

答案 1 :(得分:0)

简单的答案是否定的。是的,您可以在同一容器中同时启动nginxgunicorn。您可以创建一个脚本来执行容器运行所需的一切,然后在CMD的末尾以Dockerfile开头。或者,您可以像这样组合所有内容:

CMD (cd /usr/src/app && \
     nginx && \
     gunicorn wsgi:application --config ../configs/gunicorn.conf)

希望有帮助!