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

如何让Docker Compose从自定义路径读取环境变量

解决方案

Docker Compose 提供了两种原生方式,让你从自定义路径加载用于 docker-compose.yml 模板替换的环境变量,无需依赖 source 命令:

1. 命令行参数指定(临时测试用)

直接在启动命令中用 --env-file 参数指定自定义环境文件路径,支持多个文件(重复参数即可):

docker compose --env-file ./envs/.compose_envs.yml --env-file ./envs/.django_envs.yml up -d

2. 持久化配置(无需每次加参数)

如果希望直接用 docker compose up 启动,可通过以下两种方式设置:

方式A:设置终端/系统环境变量

在终端中设置 COMPOSE_ENV_FILES 环境变量,指定所有自定义环境文件的路径(Linux/macOS 用冒号分隔,Windows 用分号):

# Linux/macOS
export COMPOSE_ENV_FILES="./envs/.compose_envs.yml:./envs/.django_envs.yml"

# Windows PowerShell
$env:COMPOSE_ENV_FILES = ".\envs\.compose_envs.yml;.\envs\.django_envs.yml"

如果需要永久生效,可将上述命令添加到你的 shell 配置文件(如 ~/.bashrc、~/.zshrc)中。

方式B:项目根目录创建引导.env文件

在项目根目录创建一个 .env 文件(仅用于告诉 Compose 去哪里找自定义环境文件),内容如下:

COMPOSE_ENV_FILES=./envs/.compose_envs.yml:./envs/.django_envs.yml

Docker Compose 启动时会自动读取根目录的 .env,然后根据这个变量加载指定路径下的环境文件,之后你直接执行 docker compose up 即可。

注意事项

  • 你命名的 .compose_envs.yml 和 .django_envs.yml 文件,内容必须是shell 风格的键值对(不是 YAML 格式),例如:
    POSTGRES_DB=my_database
    POSTGRES_USER=admin
    
  • COMPOSE_ENV_FILES 指定的文件优先级高于根目录默认的 .env,如果有重复变量,后者会被前者覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:14:59