繁体   English   中英

在docker-compose.yml文件中获取或设置env变量

[英]Get or set env variable in docker-compose.yml file

我有一个docker-compose.yml文件,我在那里定义:

extra_hosts:
- "localhost:${MY_MACHINE_IP}"

如果我先将MY_MACHINE_IP定义为环境var,它就可以工作。

我想要实现的是执行以下操作:

extra_hosts:
- "localhost:<get MY_MACHINE_IP from env if it exists, if not set MY_MACHINE_IP env variable with value <docker-machine-ip>>"

换句话说:我想在extra_hosts部分定义它,如果已经指定了MY_MACHINE_IP,则获取它,如果没有 - 设置此env。 变量值=我的docker machine ip。

可能吗?

是的,根据docker文档

docker-compose run SERVICE env

所以我认为变量不是全局的,你可能会想到。 您必须将它们作为参数传递。 这个

你可以使用ruamel.dcw包( dcw for Docker Compose Wrapper,免责声明:我是该软件包的作者)。 它允许您在docker-compose.yaml文件中创建一个包含关键user-data的部分,该文件在将文件传递给普通的docker-compose之前被删除。 该部分可能如下所示:

user-data:
  author: Your Name <your-name@youremail.com>
  description: container for postfix/submission
  env-defaults:
    PORT: 587    # override during development
    NAME: submission
    DOCKER_BASE: /data0/DATA

然后你可以在文件的其余部分使用{PORT}{NAME}{DOCKER_BASE} ,并可以选择用环境变量覆盖这些默认值。

该实用程序还会写出一个文件.dcw_env_vars.inc ,您可以将其复制到容器和源中,以便在Dockerfile RUN脚本中获取相应的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM