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

使用phusion/baseimage构建Docker镜像时如何读取构建时环境变量

Docker构建时正确读取.env环境变量的解决方案

你当前的问题核心是:docker build --build-arg ENV_FILE=.env仅将ENV_FILE作为单个构建参数传递给Dockerfile,但Docker不会自动解析该.env文件并导入其中的变量。而你的Dockerfile仅声明了ARG VAR1,未获取到VAR1的实际值,因此打印为空。

以下是两种可行的解决方案:

方案一:手动传递单个构建参数

直接在构建命令中指定.env里的变量,让Dockerfile的ARG指令能接收到对应值:

方式1:命令中直接指定变量值

docker build --build-arg VAR1=foo --build-arg VAR2=bar -t demo:latest .

方式2:从.env文件读取后传递

避免硬编码值,用shell命令先导出.env中的变量再传递:

export $(cat .env | xargs) && docker build --build-arg VAR1=$VAR1 --build-arg VAR2=$VAR2 -t demo:latest .

方案二:在Dockerfile中直接加载.env文件

将.env文件复制到构建上下文,在构建阶段加载并使用其中的变量:

修改后的Dockerfile:

FROM phusion/baseimage:jammy-1.0.1

# 将.env文件复制到镜像临时目录
COPY .env /tmp/.env

# 加载.env变量并执行打印命令
# set -a 自动导出后续环境变量,确保source后的VAR1能在echo中生效
RUN set -a && source /tmp/.env && set +a && echo "my var1 equals to : $VAR1"

对应的构建命令无需传递ENV_FILE参数,直接执行:

docker build -t demo:latest .

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:20:44