如何在Docker Compose中使用环境变量

我希望能够在docker-compose.yml中使用env变量,并在docker-compose时传入值。这就是例子。我今天使用基本的docker

run命令来执行此操作,该命令包装在我自己的脚本中。没有任何这样的bash包装器,有没有办法通过compose实现它?

proxy:

hostname: $hostname

volumes:

- /mnt/data/logs/$hostname:/logs

- /mnt/data/$hostname:/data

回答:

  1. 创建一个template.yml,这是您的docker-compose.ymlwith环境变量。
  2. 假设您的环境变量在文件“ env.sh”中
  3. 将以下代码放入sh文件中并运行它。

来源env.sh; rm -rf docker-compose.yml; envsubst <“ template.yml”>“ docker-

compose.yml”;

docker-compose.yml将使用正确的环境变量值生成一个新文件。

示例template.yml文件:

oracledb:

image: ${ORACLE_DB_IMAGE}

privileged: true

cpuset: "0"

ports:

- "${ORACLE_DB_PORT}:${ORACLE_DB_PORT}"

command: /bin/sh -c "chmod 777 /tmp/start; /tmp/start"

container_name: ${ORACLE_DB_CONTAINER_NAME}

样本env.sh文件:

#!/bin/bash 

export ORACLE_DB_IMAGE=<image-name>

export ORACLE_DB_PORT=<port to be exposed>

export ORACLE_DB_CONTAINER_NAME=ORACLE_DB_SERVER

以上是 如何在Docker Compose中使用环境变量 的全部内容, 来源链接: utcz.com/qa/422434.html

回到顶部