我有一个Dockerfile,我试图运行一个启动java进程的守护进程。
如果我将脚本嵌入Dockerfile中,就像这样。
RUN myscript.sh
当我在生成的容器上运行/ bin / bash时,我看到来自jps的 no 条目。
但是,我可以轻松地将脚本嵌入 CMD ,在这种情况下,当我发出
docker run asdfg
我看到这个过程正常开始。
所以,我的问题是,当我们在 Dockerfile 中启动后台异步进程时,是否总是会将其副作用从容器中排除?
答案 0 :(得分:2)
后台进程需要在容器启动时启动,而不是在映像构建时启动。
因此,您的脚本需要通过CMD
或ENTRYPOINT
运行。
CMD
或ENTRYPOINT
仍然可以是包含多个命令的脚本。但我想在你的情况下,如果你想要几个后台进程,使用示例supervisord
将是你最好的选择。
另外,请查看一些已存在的Dockerfiles
,以了解它们是如何组合在一起的。