[英]How to use environment variables with docker-compose from other directory
我正在设置一个新的基于 docker 的服务器,我正在编写一个脚本来运行
$ docker-compose
一次为我所有docker-compose.yml
文件。
我知道.env
文件的存在,我知道env_file
docker-compose.yml
env_file
选项,但是.env
文件在我启动时被忽略
$ docker-compose up
从其他目录甚至env_file
完整路径都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。
如何解决这个问题?
很抱歉,但这无法修复。 提供的.env
文件必须在同一目录中。
这是 docker compose 的要求,在文档(第一段)中有描述: https : //docs.docker.com/compose/env-file/
你可以推出自己的:
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
}
您可以使用标志 --env-file 来设置 .env 文件所在的路径,例如:
docker-compose --env-file ./config/.env.dev up
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.