我怀疑这个问题的答案是否定的,因为 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 .