我有一个docker-compose.yml
文件,我在那里定义:
extra_hosts:
- "localhost:${MY_MACHINE_IP}"
如果我先将MY_MACHINE_IP定义为环境变量,那么它就可以了。
我想要实现的是执行以下操作:
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。
有可能吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以使用程序包ruamel.dcw
(dcw
用于Docker Compose Wrapper,免责声明:我是该程序包的作者)。它允许您在user-data
文件中创建一个包含密钥docker-compose.yaml
的部分,该部分在将文件交给普通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
,您可以将其复制到容器和源代码中,以便从RUN
Dockerfile
脚本中获取相应的值