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

Docker中如何从YAML文件读取.env定义的环境变量并正确解析

问题原因
  • 容器运行环境中不存在VALUE_A、NAME两个环境变量。你本地的.env文件既没有被打包到Docker镜像中,也没有在容器启动时被注入到进程环境列表,Envyaml找不到对应变量就会原样输出占位符内容。
  • 默认配置下EnvYAML不会主动读取项目目录下的.env文件,需要显式指定加载配置。
修复方案

方案1:启动容器时直接传入环境变量(变量少的场景)

不用修改镜像内容,直接在运行命令中加-e参数传入变量即可:

docker run -e VALUE_A=10 -e NAME=SWARNA python-env

方案2:将.env打包进镜像,显式指定加载(无需额外启动参数)

  1. 修改Dockerfile,添加.env文件的复制命令,同时安装python-dotenv依赖(供Envyaml读取.env文件):
FROM python:3
ADD envpy.py /
ADD env.yml /
ADD .env /
RUN pip install envyaml python-dotenv
CMD [ "python", "./envpy.py" ]
  1. 修改envpy.py中Envyaml的初始化参数,指定加载.env文件:
from envyaml import EnvYAML

# 显式指定.env文件路径加载变量
env = EnvYAML('env.yml', env_file='.env')

print(env['Information']['value'])
print(env['Information']['name'])
  1. 重新构建运行即可:
docker build -t python-env .
docker run python-env

方案3:启动时加载本地.env文件(开发场景常用,无需打包.env进镜像)

不需要修改镜像和代码,直接使用docker run自带的--env-file参数加载本地的.env文件注入容器环境:

docker run --env-file .env python-env

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:15:01