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

Docker构建时设置的ARG参数运行时输出空字符串问题排查

问题描述

我的Dockerfile内容如下:

FROM python:3.11-slim-bullseye

COPY requirements.txt .
RUN python -m pip install --upgrade pip
RUN python -m pip install -r requirements.txt

ARG my_build_arg

CMD echo $my_build_arg

执行构建命令设置参数:

docker build --build-arg my_build_arg='my_fantastic_value' -t 'my_image' .

运行镜像docker run my_image时,预期输出my_fantastic_value,但实际只输出空行。请问问题出在哪里?


问题原因与解决方案
  • 核心问题:ARG是构建阶段专属参数,仅在镜像构建过程中生效,镜像构建完成后该变量不会被保留到容器的运行环境中。容器启动执行CMD时,$my_build_arg未被定义,因此输出空行。
  • 修复方案:将构建参数的值传递给ENV变量,ENV定义的变量会被持久化到容器的运行环境中。修改后的Dockerfile如下:
FROM python:3.11-slim-bullseye

COPY requirements.txt .
RUN python -m pip install --upgrade pip
RUN python -m pip install -r requirements.txt

ARG my_build_arg
# 将构建参数赋值为环境变量,保留到运行阶段
ENV my_run_var=$my_build_arg

CMD echo $my_run_var

如果只是临时在运行时传递变量,也可以使用docker run -e my_build_arg='my_fantastic_value' my_image,但这不符合你通过构建参数将值固化到镜像的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 18:52:33