首页 > 解决方案 > 如何使用来自其他目录的 docker-compose 环境变量

问题描述

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

$ docker-compose

一次处理我所有的docker-compose.yml文件。

我知道.env文件的存在并且我知道 中的env_file选项docker-compose.yml,但是.env当我启动时这些文件被忽略了

$ docker-compose up

从其他目录,甚至没有env_file帮助中的完整路径。

my_script.sh:

#!/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

.env

ROOT_DOMAIN=server1.domain.tld

我想用文件${ROOT_DOMAIN}中定义的变量替换卷中的变量.env。当我跑步时,这就像一个魅力

$ docker-compose up

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

如何解决这个问题?

标签: dockerdocker-composeenvironment-variables

解决方案


很抱歉,但这无法解决。提供的.env文件必须在同一目录中。

这是 docker compose 的要求,并在文档(第一段)中进行了描述:https ://docs.docker.com/compose/env-file/


推荐阅读