如何将环境变量与docker compose一起从其他目录使用

如何将环境变量与docker compose一起从其他目录使用,docker,docker-compose,environment-variables,Docker,Docker Compose,Environment Variables,我正在建立一个新的基于docker的服务器,我正在编写一个运行脚本 $ docker-compose 对于我所有的docker compose.yml文件,一次完成 我知道存在.env文件,我知道docker compose.yml中的env_文件选项,但是启动时会忽略.env文件 $ docker-compose up 来自其他目录,甚至不是env_文件中的完整路径 我的脚本。sh: version: '3' services: service_name: build: /s

我正在建立一个新的基于docker的服务器,我正在编写一个运行脚本

$ docker-compose
对于我所有的
docker compose.yml
文件,一次完成

我知道存在
.env
文件,我知道
docker compose.yml
中的
env_文件
选项,但是启动时会忽略
.env
文件

$ docker-compose up
来自其他目录,甚至不是
env_文件中的完整路径

我的脚本。sh:

version: '3'

services:
  service_name:
    build: /server1/apache
    env_file: /server1/.env
    volumes:
      - /web/${ROOT_DOMAIN}/web/:/var/www/:rw
#/bin/bash
docker compose up-f/server1/docker-compose.yml-f/server2/docker-compose.yml-f/server3/docker-compose.yml
Docker compose.yml:

version: '3'

services:
  service_name:
    build: /server1/apache
    env_file: /server1/.env
    volumes:
      - /web/${ROOT_DOMAIN}/web/:/var/www/:rw
环境署署长

我想将卷中的
${ROOT\u DOMAIN}
变量替换为
.env
文件中定义的变量。当我跑步时,这就像一个符咒

$ docker-compose up
/server1/
文件夹。但是,当我运行位于其他目录中的脚本时,环境变量被忽略,默认为null


如何修复此问题?

很抱歉,此问题无法修复。提供的
.env
文件必须位于同一目录中

这是docker compose的要求,在文档(第一段)中有描述:

您可以自己滚动:

function execute() {    
    (set -a;  source .env;  cat $1 | envsubst | kubectl apply -f -)
}

execute foo.yaml


符号链接怎么样?
$ cat .env
FOO=123
BAR=abc

$ cat foo.yaml
{
    "myfoo": $FOO,
    "mybar": $BAR
}