Dockerfile:ENTRYPOINT和CMD

时间:2018-02-28 14:37:02

标签: docker dockerfile

我在postgres图像(https://github.com/docker-library/postgres/blob/master/10/Dockerfile)的Dockerfile中看到,最后容器的启动定义如下:

ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 5432
CMD ["postgres"]

如果我理解这一点,则论证postgres会转移到docker-entrypoint.sh中,因此脚本中的$1将替换为postgres,脚本将被执行。< / p>

现在我的问题是我是否可以基于postgres图像(FROM postgres)定义我自己的Dockerfile,但是覆盖基础Dockerfile的CMD并完成首先在启动时执行命令然后执行带有docker-entrypoint.sh参数的postgres

这样的事情:

FROM postgres
...
CMD <my-command> && [“postgres”]

2 个答案:

答案 0 :(得分:1)

您可以创建自己的index.php

headers

您的泊坞窗文件如下所示

my-entrypoint.sh

答案 1 :(得分:0)

是的,你可以做这样的事情

对于Dockerfile中的CMD命令,您有3种可能的语法

摘自

https://docs.docker.com/engine/reference/builder/#cmd

CMD ["executable","param1","param2"] (exec form, this is the preferred form) CMD ["param1","param2"] (as default parameters to ENTRYPOINT) CMD command param1 param2 (shell form)

所以你可以使用任何,为了做你想要的,shell形式(最后一个)似乎很适合

您还可以启动一个可以完成所有工作的shell脚本