首页 > 解决方案 > Docker-compose .env 文件内部变量替换

问题描述

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

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

我在说的是在我的 .env 文件中做这样的事情:

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

CONFIG_FILE=${SOME_LOCATION}/config
CONSTANT_FILE=${SOME_LOCATION}/constants

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

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

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

标签: docker-composeenvironment-variables

解决方案


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

像这样的文件路径;

-project
  -> docker-compose.yml
  -> .env
  -> start.sh

码头工人-compose.yml

services:
  jira:
    image: atlassian/jira-software
    volumes:
      - ${CONFIG_FILE}:/var/atlassian/application-data/jira
    ports:
      - 8080:8080 
volumes:
  jira_vol:
    external: false

启动.sh

export "CONFIG_FILE=${SOME_LOCATION}/jira_vol"
docker-compose up -d

.env

SOME_LOCATION=./volumes

最后运行这个命令;

sh start.sh

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


推荐阅读