因此,在撰写文件中,我们可以使用命令指令覆盖原始CMD:
my-service:
image: some-image
command: "custom-command"
我知道我们可以通过以下方式链接多个命令: https://stackoverflow.com/a/30064175/5454794
但是,我使用的图像以exec形式包含和Entrypoint + CMD。而且我需要保留CMD中定义的参数,但是如果执行此命令中的任何其他指令,则将作为入口点的参数受到威胁。
ENTRYPOINT [ "/opt/entrypoint.sh" ]
CMD ["-flag", "flag_value"]
所以基本上我想要的是运行带有其CMD的原始ENTRYPOINT,然后运行我的脚本,该脚本需要从此exec形式中分解出来。
编辑:我无法修改dockerfile。
答案 0 :(得分:1)
docker-compose文件中的command
仅可以覆盖默认命令,不能添加默认命令。如果您无法修改Dockerfile,则需要以引用的相同方式链接命令
command: bash -c "command1 && command2 && ...
,但您需要从Dockerfile中的ENTRYPOINT和CMD手动复制原始命令。因此,如果您的Dockerfile中有此文件:
ENTRYPOINT [ "/opt/entrypoint.sh" ]
CMD ["-flag", "flag_value"]
然后在docker-compose中使用entrypoint
(使用entrypoint
代替command
清除Dockerfile设置的ENTRYPOINT
和CMD
)
entrypoint: bash -c "/opt/entrypoint.sh -flag flag_value && new_command1 && ..."
设置入口点均会覆盖在上设置的任何默认入口点 服务的图片包含ENTRYPOINT Dockerfile指令,并清除了 删除图像上的任何默认命令-这意味着如果有CMD 指令在Dockerfile中被忽略。