docker - 如何使用来自其他目录的 docker-compose 环境变量

标签 docker docker-compose environment-variables

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

$ docker-compose

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

我知道 .env 文件的存在,我知道 docker-compose.yml 中的 env_file 选项,但是 .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

.环境

ROOT_DOMAIN=server1.domain.tld

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

$ docker-compose up

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

如何解决这个问题?

最佳答案

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

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

关于docker - 如何使用来自其他目录的 docker-compose 环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56222897/

相关文章:

docker - 在 Docker-Compose 和 GitLab-CI 之间共享环境变量

node.js - create-react-app 本地和开发环境变量

nginx - 使用 Nginx 在 Docker 容器中部署带有路由器的 Angular2

maven - Docker java api maven Build error : busybox is an unrecognized image. 请先拉取镜像

powershell - DockerFile的一些问题

node.js - WebStorm 的终端无法识别 Node 和 Npm

docker - 进入运行 Docker-for-mac 的 Alpine linux 的文件系统

docker - Azure容器服务容器作为VSTS代理来构建docker镜像

java - Docker compose for mysql 和 spring 应用程序拒绝访问

nginx - 使用 jwilder nginx-proxy,如何将子目录 url 代理传递到特定容器?