【问题标题】:Is supervisord needed for docker+gunicorn+nginx?docker+gunicorn+nginx需要supervisord吗?
【发布时间】:2016-12-07 21:49:53
【问题描述】:

我在 docker 中使用 gunicorn 运行 django,我的 docker 入口点是:

CMD ["gunicorn", "myapp.wsgi"]

假设已经有一个进程在系统启动时运行 docker 并在停止时重新启动 docker 容器,我什至需要使用 supervisord 吗?如果 gunicorn 会崩溃,它不会让 docker 崩溃然后重新启动吗?

【问题讨论】:

    标签: django docker gunicorn supervisord


    【解决方案1】:

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

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

    希望有帮助!

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-13
        • 1970-01-01
        • 2017-01-13
        • 2020-03-12
        • 2018-11-25
        • 1970-01-01
        • 2019-01-04
        相关资源
        最近更新 更多