Dockerfile:运行结果为否操作

我有一个Dockerfile,其中即时通讯试图运行一个启动java进程的deamon。

如果我将脚本embedded到Dockerfile中,就像这样。

RUN myscript.sh 

当我在结果容器上运行/ bin / bash时,我看不到来自jps的条目。

但是,我可以很容易地将脚本作为CMDembedded,在这种情况下,当我发出

 docker run asdfg 

我看到过程正常开始。

所以,我的问题是,当我们在一个Dockerfile中启动一个背景asynchronous过程时,它的副作用总是会被排除在容器之外?

后台进程需要在容器启动时启动,而不是映像构build。 所以你的脚本需要通过CMDENTRYPOINT运行。

CMDENTRYPOINT仍然可以是一个包含多个命令的脚本。 但我想你的情况,如果你想要几个后台进程,使用示例supervisord将是你最好的select。

此外,请查看一些已经存在的Dockerfiles以了解它们如何融合在一起。