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,那么我将复制这些内容,但是通过您的配置复制相同的值总是让人感到肮脏。

hotdog33 回答:Docker-compose .env文件内部变量替换

您可以在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。

本文链接:https://www.f2er.com/3169787.html

大家都在问