2017-05-10 73 views
0

本来我Dockerfile读的最后一行:保持搬运工,撰写容器中运行的入口点后

RUN puppet apply /etc/puppetlabs/puppet/master.pp 

我需要的命令只有一次创建容器和安装运行,所以我改成:

ENTRYPOINT puppet apply /etc/puppetlabs/puppet/master.pp 

该更改修复了我原来的问题,但创建了另一个,容器在命令完成后停止。

我发现我可以通过添加诸如&& while true; do sleep 1000; done之类的东西来保持容器运行。

这似乎有点冒失鬼,我想知道是否有更好的方法来保持我的容器停止?

注意:我在网上看到了一些人们在运行docker命令时使用标志的建议。所以我会指出我正在使用docker-compose初始化这个容器。

回答

1

我使用&& sleep infinity。 (请注意busybox sleep不提供infinity - 只有coreutils做。)

+0

感谢很高兴知道和欣赏busybox上的细节。我现在仍将继续开放,因为我仍在寻找其他解决方案。我猜ENTRYPOINT通常用于当你想使用容器作为可执行文件。在我的情况下,我只想在容器初始化时运行一个命令。原因是我正在使用在初始化容器之前不存在的敏感密钥文件运行命令(因为它位于附加卷中)。 –

相关问题