Docker的版本可以包含variables吗?

我怀疑这个问题的答案是否定的,因为FROM命令在文件中首先(在任何ENV语句之前),但是你能参数化一个docker容器创build的基础图像的版本吗?

例如

FROM image-name:4.6.${patchVersion} 

我看这个的原因是为了支持CI / CD。 我已经分离了构build容器和部署容器,部署容器的patchVersion是由构build生成的。 我也想这样生成构build容器的补丁号,然后从部署容器中引用它

TL; DR不仅与Docker

长:

该文件说:

Dockerfile中的以下指令列表支持环境variables:

  • 复制
  • ENV
  • 暴露
  • 标签
  • 用户
  • WORKDIR
  • STOPSIGNAL

https://docs.docker.com/engine/reference/builder/#environment-replacement

您可以使用envsubst https://linux.die.net/man/1/envsubst在Dockerfile docker build之前重写Dockerfile

 envsubst < Dockerfile.template_with_variable > Dockerfile docker build .