docker --env-file 支持从文件批量加载环境变量,格式为每行 key=value(等号无空格)、支持注释与引号包裹值、不支持变量展开;可多次使用实现覆盖,compose 中通过 env_file 声明,但不作用于模板变量;需注意路径、编码及敏感信息保护。
docker 使用 --env-file 可以一次性从外部文件加载多个环境变量,避免在命令行中重复写 --env 或把敏感配置硬编码进镜像,是生产部署和本地开发中推荐的配置管理方式。
env-file 文件格式要求
环境变量文件需满足以下规则:
- 每行一个
KEY=VALUE格式,等号前后不能有空格(DB_HOST=localhost✅,DB_HOST = localhost❌) - 支持以
#开头的注释行(# 这是数据库配置) - 空行会被忽略
- 值中若含空格、特殊字符(如
$、\),建议用单引号或双引号包裹(APP_NAME='My App') - 不支持变量展开(例如
HOME_DIR=$HOME中的$HOME不会被解析)
运行容器时加载 env-file
直接在 docker run 命令中使用 --env-file 参数指定文件路径:
docker run --env-file ./config.env nginx:alpine
如果需要加载多个文件(比如公共配置 + 环境专属配置),可多次使用 --env-file:
docker run --env-file ./common.env --env-file ./prod.env nginx:alpine
后加载的文件中同名变量会覆盖前面的(prod.env 里的 LOG_LEVEL 会覆盖 common.env 中的)。
使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
与 Docker Compose 配合使用
在 docker-compose.yml 中,通过 env_file 字段声明配置文件:
services:
app:
image: myapp:latest
env_file:
- .env # 默认加载项目根目录 .env
- ./config/dev.env
注意:env_file 加载的变量仅作用于容器内,不会自动注入到 Compose 模板的 ${VAR} 占位符中;模板变量仍需靠 shell 的 .env 或 --env-file 启动 Compose 时传入。
安全提示与常见问题
不要把 --env-file 指向包含密码、密钥等敏感信息的文件并提交到 Git。建议:
- 将敏感配置文件加入
.gitignore - 用
docker run --env-file在运行时动态挂载(如 CI/CD 流水线中注入) - 生产环境优先考虑结合 Docker Secrets(Swarm)或外部 Vault 工具
常见错误:文件路径错误(相对路径基于执行 docker run 命令的当前目录)、文件编码为 UTF-8 with BOM(Windows 编辑器易产生,会导致变量读取失败)、等号前后误加空格导致变量名/值被截断。










