【发布时间】:2021-01-07 23:59:14
【问题描述】:
我有一个“主”Docker 项目,它通过主 docker-compose.yml 和 .env 文件触发一些子项目。请参阅以下目录结构,以便您更好地了解:
`-- project/
`-- docker-compose.yml/
|-- .env
|-- project-1/
| |-- docker-compose.yml
| `-- .env
`-- project-2/
|-- docker-compose.yml
`-- .env
.env 主文件 (/project/.env) 如下所示:
COMPOSE_CONVERT_WINDOWS_PATHS=1
COMPOSE_PATH_SEPARATOR=|
COMPOSE_FILE=docker-compose.local.yml|project-1/docker-compose.yml|project-2/docker-compose.yml
这告诉 Docker 也运行那些子 project-1, project-2 通过它是 docker-compose.yml 和它是 .env 文件。
我希望每个项目都有一个自定义配置,因此我将以下配置添加到子项目 (/project-1/docker-compose.yml, /project-2/docker-compose.yml):
version: "2.4"
services:
main-project-1:
environment:
- XDEBUG_MODE=${XDEBUG_MODE:-off}
如果我没有错,这意味着:如果变量 XDEBUG_MODE 未定义,则将其默认为 off,否则使用 .env 文件中定义的值。然后我配置了.env文件如下:
// project-2/.env
XDEBUG_MODE=on
由于某种原因,环境变量XDEBUG_MODE 被设置为off,即使我在.env 文件中将其设置为debug。
我还尝试了以下方法:
version: "2.4"
services:
main-project-1:
environment:
- XDEBUG_MODE=${XDEBUG_MODE}
但它再次设置为off。
我不想在 .env 主文件中定义变量,因为我想赋予每个项目打开/关闭它的能力。我在这里可能缺少什么?
我已经阅读了here 以及互联网上其他人的帖子,但找不到我的问题的解决方案。
【问题讨论】:
标签: docker docker-compose environment-variables