Docker FROM 版本可以包含变量吗?

Docker FROM 版本可以包含变量吗?

我怀疑这个问题的答案是否定的,因为 FROM 命令在文件中排在第一位(在任何 ENV 语句之前),但是您可以参数化创建 docker 容器的基础映像的版本吗?

例如

FROM image-name:4.6.${patchVersion}

我研究这个的原因是为了支持 CI/CD。我已经将构建容器和部署容器分开,部署容器的 patchVersion 由构建生成。我还想以这种方式生成构建容器的补丁号,然后从部署容器中引用它

答案1

TL;DR 不仅仅适用于 Docker

长的:

文档说:

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

  • 添加
  • 复制
  • 环境
  • 暴露
  • 标签
  • 用户
  • 工作目录
  • 体积
  • 停止信号

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

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

envsubst < Dockerfile.template_with_variable > Dockerfile
docker build .

相关内容