【问题标题】:Docker-compose .env file internal variable substitutionDocker-compose .env 文件内部变量替换
【发布时间】:2020-02-29 07:11:19
【问题描述】:

我正在尝试在 .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,如果不可能,那么我将只是复制这些类型的东西,但通过您的配置复制相同的值总是感觉很脏。

【问题讨论】:

  • 简短回答:您不能替换 .env 文件中的变量。
  • 它适用于最新版本的 docker-compose (1.29.1)。

标签: docker-compose environment-variables


【解决方案1】:

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

这样的文件路径;

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

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

start.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。

【讨论】:

  • 是否有另一种方法不需要在 docker-compose 中设置它们? .env 文件的唯一可能语法是THIS=that
猜你喜欢
  • 2021-08-27
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
  • 2018-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多