多个docker compose文件,指定了env_文件

多个docker compose文件,指定了env_文件,docker,environment-variables,dockerfile,docker-compose,Docker,Environment Variables,Dockerfile,Docker Compose,我正在做一个项目,我正在使用docker创建一个基本配置,并对其进行扩展。我的基本docker-compose.yml文件具有链接,因此我无法在扩展compose文件中使用扩展参数。相反,我将多个docker compose文件指定给docker compose工具 这很好,只是.env文件的路径似乎总是相对于指定的第一个docker-compose.yml文件,这破坏了我的预期功能 例如: docker compose.yml(生活在一个公共位置,比如说~/base app) 现在在子应用程序

我正在做一个项目,我正在使用docker创建一个基本配置,并对其进行扩展。我的基本docker-compose.yml文件具有
链接
,因此我无法在扩展compose文件中使用
扩展
参数。相反,我将多个docker compose文件指定给
docker compose
工具

这很好,只是
.env
文件的路径似乎总是相对于指定的第一个docker-compose.yml文件,这破坏了我的预期功能

例如:

docker compose.yml(生活在一个公共位置,比如说
~/base app

现在在子应用程序中,我想指定一个
命令
env_文件

docker compose.override.yml

web:
  environment:
    NODE_ENV: development
  env_file: .env
  command: node server.js
运行此安装程序时,我将使用以下命令:

docker-compose -f ~/base-app/docker-compose.yml -f docker-compose.override.yml up
只要我不指定
env_文件
,这就可以很好地工作。但是指定了
env_文件
,我会得到如下错误:

ERROR: Couldn't find env file: ~/base-app/.env
读取时,它表示当使用
-f
标志时,env文件路径相对于docker compose文件


我是遗漏了什么,还是这是一个错误?与重写docker compose文件相比,使用
.env
文件的干净方法是什么?

就我个人而言,对我来说,我非常高兴的是,我需要交叉引用的所有项目的根目录下都有一个空的docker compose文件,并且总是将其设置为所有compose命令中的第一个
-f
,并已将所有撰写文件更改为使用相对于第一个撰写文件所在的解决方案/源的根目录的路径

/src <- root
/src/docker-compose.yml <- empty docker-compose file only specifying version
/src/api/docker-compose.yml <- docker-compose file using paths relative from /src/
/src/web/docker-compose.yml <- docker-compose file using paths relative from /src/

对于多个合成文件,每个文件仅被视为一个不完整的片段,因此路径是相对于基的。我认为如果它们位于不同的目录中,就没有任何方法可以使其相对于覆盖。
/src <- root
/src/docker-compose.yml <- empty docker-compose file only specifying version
/src/api/docker-compose.yml <- docker-compose file using paths relative from /src/
/src/web/docker-compose.yml <- docker-compose file using paths relative from /src/
/** docker-compose-re-up.bat **/
docker-compose -f ../docker-compose.yml -f docker-compose.yml down
docker-compose -f ../docker-compose.yml -f docker-compose.yml build
docker-compose -f ../docker-compose.yml -f docker-compose.yml up -d