使用Docker-compose动态“定义”要传递给Docker容器的环境变量(及其值

7kqas0il  于 2023-01-25  发布在  Docker
关注(0)|答案(1)|浏览(259)

我知道环境变量可以传递给以docker-compose up开头的Docker容器,也可以在命令行中传递(VAR1=VAL1 VAR2=VAL2 docker-compose up)或使用.env文件。但是,在命令行上提供环境变量需要将它们Map到docker-compose.yml文件中(在environment下,用于启动服务)。对于上面提到的示例,我希望避免在docker-compose.yml文件中指定VAR1VAR2。有什么方法可以做到这一点吗?

**EDIT:**我所说的必须指定VAR1VAR2的意思如下(在docker-compose.yml文件中):

services:
  dev:
    image: ...
    environment:
      VAR1=${VAR1}
      VAR2=${VAR2}
  ..
kb5ga3dv

kb5ga3dv1#

这是一个yaml文件,你可以根据自己的需要解析和修改它。

# docker-compose.yml.input
services:
  dev:
    image: ...

接下来沿着:

python -c 'import os, yaml; dd = yaml.safe_load(open("docker-compose.yml.input", "r").read()); dd["services"]["dev"]["environment"] = [a: os.environ[a] for a in ["VAR1", "VAR2"]]; print(yaml.dumps(dd))' > docker-compose.yml

相关问题