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

Get*_*fty 4 environment-variables docker docker-compose

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

$ docker-compose
Run Code Online (Sandbox Code Playgroud)

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

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

$ docker-compose up
Run Code Online (Sandbox Code Playgroud)

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

my_script.sh:

$ docker-compose
Run Code Online (Sandbox Code Playgroud)

Docker-compose.yml:

version: '3'

services:
  service_name:
    build: /server1/apache
    env_file: /server1/.env
    volumes:
      - /web/${ROOT_DOMAIN}/web/:/var/www/:rw
Run Code Online (Sandbox Code Playgroud)

.env

ROOT_DOMAIN=server1.domain.tld
Run Code Online (Sandbox Code Playgroud)

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

$ docker-compose up
Run Code Online (Sandbox Code Playgroud)

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

如何解决这个问题?

mbu*_*ann 6

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

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

  • 符号链接怎么样? (3认同)
  • 可以设置标志 --env-file 例如: docker-compose --env-file ./config/.env.dev up。更多详细信息请参见 https://docs.docker.com/compose/environment-variables/ (2认同)