You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Dockerfile的build-arg作为ENV使用时无法正常生效?

问题原因

Dockerfile 中,在 FROM 关键字之前定义的 ARG 变量,作用域仅局限于所有 FROM 指令本身,无法直接在 FROM 之后的构建阶段中使用。你定义在首行的 ARG VER=INVALID 只能用来解析 FROM python:${VER} 行的基础镜像标签,进入 python 基础镜像对应的构建阶段后,该 ARG 就已经失效,因此后续 ENV VERSION ${VER} 拿到的 VER 是空值,最终运行时环境变量 VERSION 自然为空。

解决方法

只需要在 FROM 之后重新声明需要复用的 ARG 变量即可,修改后的 Dockerfile 如下:

ARG VER=INVALID
FROM python:${VER}
# 重新声明ARG,继承构建时传入的参数值
ARG VER
ENV VERSION ${VER}
CMD ["/bin/bash", "-c", "echo VERSION = $VERSION"]

原构建命令无需修改,仍使用:

sudo docker build --tag teste --build-arg VER=3 .

重新构建后运行镜像,就能正常输出 VERSION = 3。

内容的提问来源于stack exchange,提问作者Beto Neto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:54:02