一尘不染

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

docker

我希望能够在docker-compose.yml中使用env变量,并在docker-compose时传入值。这就是例子。我今天使用基本的docker
run命令来执行此操作,该命令包装在我自己的脚本中。没有任何这样的bash包装器,有没有办法通过compose实现它?

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

阅读 605

收藏
2020-06-17

共1个答案

一尘不染

  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
2020-06-17