Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取或设置docker-compose.yml文件中的env变量_Docker_Environment Variables_Yaml_Docker Compose - Fatal编程技术网

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

获取或设置docker-compose.yml文件中的env变量,docker,environment-variables,yaml,docker-compose,Docker,Environment Variables,Yaml,Docker Compose,我有一个docker compose.yml文件,在那里我定义: extra_hosts: - "localhost:${MY_MACHINE_IP}" 如果我在前面将我的机器IP定义为环境变量,它就会工作 我想要实现的是执行以下操作: extra_hosts: - "localhost:<get MY_MACHINE_IP from env if it exists, if not set MY_MACHINE_IP env variable with value <docker

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

extra_hosts:
- "localhost:${MY_MACHINE_IP}"
如果我在前面将我的机器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_主机:
-“本地主机:”
换句话说:我想在extra_hosts部分中定义它,如果已经指定了我的_MACHINE_IP,则获取它,如果没有,则设置这个env。变量的值=我的docker机器ip


可能吗?

根据docker文档,在中是

docker-compose run SERVICE env
所以我认为这些变量并不像你想象的那样是全局的。您必须将它们作为参数传递。
阅读。

您可以使用软件包
ruamel.dcw
dcw
对于Docker Compose Wrapper,免责声明:我是该软件包的作者)。它允许您在
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
用户数据:
作者:你的名字
描述:用于后缀/提交的容器
环境默认值:
端口:587#开发期间覆盖
名称:提交
DOCKER_基地:/data0/DATA
然后,您可以在文件的其余部分使用
{PORT}
{NAME}
{DOCKER\u BASE}
,并可以选择使用环境变量覆盖这些默认值


该实用程序还写出一个文件
.dcw_env_vars.inc
,您可以将该文件复制到容器和源代码中,以便将适当的值从
Dockerfile

中运行到脚本中。您能根据我的问题给出一个示例吗?看起来怎么样?因为我想我不完全理解你。提前感谢。通过环境:“我的机器IP=0.0.0.0”您可以在这里阅读更多内容。如果您使用docker compsoe UP,则有更多选项-不运行一些“特殊功能”,可以执行
HOST\u IP: