Docker-compose .env 文件内部变量替换

bli*_*616 5 environment-variables docker-compose

我正在尝试在.env文件内执行变量替换,但到目前为止还没有任何运气。

我一直在查看 docker-compose 文档,但没有发现任何提到这一点的内容(或任何在线示例),但如果不可能的话,这似乎会令人惊讶。

我正在谈论的是在我的 .env 文件中做这样的事情:

// .env
SOME_LOCATION=/path/to/some/location

CONFIG_FILE=${SOME_LOCATION}/config
CONSTANT_FILE=${SOME_LOCATION}/constants
Run Code Online (Sandbox Code Playgroud)

(这个例子CONFIG_FILE等于字符串$${SOME_LOCATION}/config,同样的事情发生在CONSTANT_FILE

我意识到这在compose.yml具有这样的语法的文件内部是可能的,但是可以在.env文件内部完成吗?

如果不可能,我正在使用 docker-compose 版本 1.24.1,那么我只会复制这些类型的东西,但是通过您的配置复制相同的值总是感觉很脏。

小智 0

您可以在 shell 脚本中使用导出命令更改或添加 .env 变量。

文件路径是这样的;

-project
  -> docker-compose.yml
  -> .env
  -> start.sh
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

services:
  jira:
    image: atlassian/jira-software
    volumes:
      - ${CONFIG_FILE}:/var/atlassian/application-data/jira
    ports:
      - 8080:8080 
volumes:
  jira_vol:
    external: false
Run Code Online (Sandbox Code Playgroud)

启动文件

export "CONFIG_FILE=${SOME_LOCATION}/jira_vol"
docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

.env

SOME_LOCATION=./volumes
Run Code Online (Sandbox Code Playgroud)

最后运行这个命令;

sh start.sh
Run Code Online (Sandbox Code Playgroud)

start.sh 文件将添加 CONFIG_FILE 变量并运行 docker compose。您可以在docker-compose.yml中使用 CONFIG_FILE 和 SOME_LOCATION 。