我有一个Dockerfile,其中我试图运行一个启动Java进程的守护进程。
如果我将脚本嵌入到Dockerfile中,就像这样。
RUN myscript.sh
在生成的容器上运行/ bin / bash时, 没有 看到jps中的条目。
但是,在这种情况下,我可以轻松将脚本嵌入为 CMD
docker run asdfg
我看到该过程正常启动。
所以,我的问题是,当我们在 Dockerfile中 启动后台异步进程时,是否总是会从容器中排除其副作用?
后台进程需要在容器启动时启动,而不是在映像生成时启动。因此,您的脚本需要通过CMD或运行ENTRYPOINT。
CMD
ENTRYPOINT
CMD或者ENTRYPOINT仍然可以是包含多个命令的脚本。但是我想在您的情况下,如果您需要多个后台进程,那么使用示例supervisord将是您的最佳选择。
supervisord
另外,请查看一些已经存在的内容,Dockerfiles以了解它们如何组合在一起。
Dockerfiles