docker+gunicorn+nginx 需要 supervisord 吗?
Is supervisord needed for docker+gunicorn+nginx?
我 运行ning django with gunicorn inside docker,我 docker 的入口点是:
CMD ["gunicorn", "myapp.wsgi"]
假设已经有一个进程在系统启动时运行 docker 停止时重新启动docker 容器,我还需要使用supervisord吗?如果 gunicorn 会崩溃,它不会崩溃 docker 然后重新启动吗?
你唯一需要在 Docker 容器中使用诸如 supervisord(或其他进程主管)之类的东西的情况是,如果你需要在容器启动时在容器内启动多个独立进程。
例如,如果您需要在同一容器中启动 nginx 和 gunicorn,则需要调查某种进程主管。但是,更常见的解决方案是将这两个服务放在两个单独的容器中。 docker-compose 之类的工具有助于管理多容器应用程序。
如果容器因为主进程退出而退出,如果您在首次启动时配置了重启策略(例如,通过 docker run --restart=always ...
),Docker 将重启该容器。
简单的答案是否定的。是的,您可以在同一个容器中同时启动 nginx
和 gunicorn
。您可以创建一个脚本来执行您的容器 运行 所需的一切,并在 Dockerfile
末尾以 CMD
启动它。或者您可以像这样组合所有内容:
CMD (cd /usr/src/app && \
nginx && \
gunicorn wsgi:application --config ../configs/gunicorn.conf)
希望对您有所帮助!
我 运行ning django with gunicorn inside docker,我 docker 的入口点是:
CMD ["gunicorn", "myapp.wsgi"]
假设已经有一个进程在系统启动时运行 docker 停止时重新启动docker 容器,我还需要使用supervisord吗?如果 gunicorn 会崩溃,它不会崩溃 docker 然后重新启动吗?
你唯一需要在 Docker 容器中使用诸如 supervisord(或其他进程主管)之类的东西的情况是,如果你需要在容器启动时在容器内启动多个独立进程。
例如,如果您需要在同一容器中启动 nginx 和 gunicorn,则需要调查某种进程主管。但是,更常见的解决方案是将这两个服务放在两个单独的容器中。 docker-compose 之类的工具有助于管理多容器应用程序。
如果容器因为主进程退出而退出,如果您在首次启动时配置了重启策略(例如,通过 docker run --restart=always ...
),Docker 将重启该容器。
简单的答案是否定的。是的,您可以在同一个容器中同时启动 nginx
和 gunicorn
。您可以创建一个脚本来执行您的容器 运行 所需的一切,并在 Dockerfile
末尾以 CMD
启动它。或者您可以像这样组合所有内容:
CMD (cd /usr/src/app && \
nginx && \
gunicorn wsgi:application --config ../configs/gunicorn.conf)
希望对您有所帮助!