【问题标题】:run uwsgi after official nginx container start?官方 nginx 容器启动后运行 uwsgi?
【发布时间】:2019-03-16 14:08:14
【问题描述】:

我只是根据nginx官方镜像写了一个包含CMD["uwsgi", "--ini", "uwsgi.ini"]的自定义容器dockerfile

我看到这个 nginx 官方镜像的 Dockerfile 末尾有一个CMD["nginx", "-g", "daemon off"]

这应该意味着容器启动时启动 nginx。 所以我的 dockerfile 中的CMD["uwsgi", "--ini", "uwsgi.ini"] 将覆盖它,因此容器将立即退出。 我应该如何不覆盖它并使 nginx 和 uwsgi 都工作?

我搜索了很多,但这些解决方案都不是基于 nginx 官方图像。 显然我可以只为 uwsgi 运行另一个容器并将其连接到 nginx 容器(即 nginx 官方镜像运行的容器),但我认为这很麻烦且没有必要。

the nginx offcial image here

【问题讨论】:

    标签: docker nginx dockerfile uwsgi docker-entrypoint


    【解决方案1】:

    您可以使用ENTRYPOINTCMD 通过提供shell 脚本/包装器在容器内运行多个进程。您应该尽量避免这样做,因为这不是最佳做法。单个容器应该负责管理单个进程。

    但是,您可以通过一种解决方法来管理容器内的多个进程,即使用 shell 脚本包装器supervisor
    它在官方文档中 -
    https://docs.docker.com/config/containers/multi-service_container/

    【讨论】:

      【解决方案2】:

      首先,在一个容器中运行 2 个进程并不是 docker 哲学。 这是一个普遍接受的:officialy,和through the community

      因此,您宁愿构建一个堆栈,同时包含 nginx 和您的应用程序。

      如果您真的想要或需要按照自己的方式执行此操作,则可以pipe several command within the CMD instruction(如果您首先指定命令外壳)...但您也可以在此处使用script
      请记住,脚本将在您的容器内执行,因此请从容器 POV 而非主机 POV 中考虑!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-24
        • 2018-05-16
        • 2020-07-17
        相关资源
        最近更新 更多