我刚写了一个基于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 offcial image运行的容器),但我认为这是麻烦和不必要的。
发布于 2018-10-11 21:25:42
您可以通过提供外壳脚本/包装器,使用ENTRYPOINT或CMD在容器内运行多个进程。你应该尽量避免这样做,因为这不是最佳实践。单个容器应该负责管理单个进程。
但是,有一个变通方法,您可以通过它来管理容器内的多个进程,例如,使用shell脚本包装器或supervisor。
它在官方文件里-
https://docs.docker.com/config/containers/multi-service_container/
发布于 2018-10-11 21:35:45
首先,这不是在一个容器中运行两个进程的docker哲学。这是一个被普遍接受的方法:officialy和through the community
因此,您更愿意使用nginx和您的应用程序构建一个堆栈。
如果你真的想或者需要按照你自己的方式去做,你可以先指定命令pipe several command within the CMD instruction ...但您也可以在这里使用script。
请记住,脚本将从您的容器中执行,所以请从容器POV考虑,而不是从主机POV!
https://stackoverflow.com/questions/52760958
复制相似问题