如何在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
回答:
- 创建一个
template.yml
,这是您的docker-compose.yml
with环境变量。 - 假设您的环境变量在文件“ env.sh”中
- 将以下代码放入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