在正式的Nginx容器启动后运行uwsgi?

时间:2018-10-11 13:12:20

标签: docker nginx dockerfile uwsgi docker-entrypoint

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

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

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

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

the nginx offcial image here

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

首先,这不是在一个容器中运行2个进程的docker哲学。 这是一种普遍接受的方法:officialythrough the community

因此,您宁愿使用nginx和应用程序构建堆栈。

如果您确实希望或需要按照自己的方式进行操作,则可以先pipe several command within the CMD instruction,如果您首先指定了命令外壳...但是也可以在此处使用script。 请记住,该脚本将在您的容器内执行,因此请从容器POV而不是宿主的角度考虑!