我正在使用docker-compose文件的版本2。
是否可以从env_file读取extra_hosts?
我已经在一个环境变量文件中为所有docker-compose定义了公共变量。
样品:-
version: '2'
workspace:
env_file:
- "../shared_environment/shared_variables.env"
extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}"
- "windowshost:${WINDOWS_HOST_IP}"
当我运行docker-compose config时,它具有以下输出。
workspace:
environment:
DOCKER_HOST_IP: 192.168.99.100
WINDOWS_HOST_IP: 192.168.99.1
extra_hosts:
- 'dockerhost:'
- 'windowshost:'
所以在上面的输出中,我能够看到它正在读取文件,但是之后我如何在extra_hosts中使用它呢?
答案 0 :(得分:1)
env_file
配置将环境变量从外部文件传递到服务的容器。参见The “env_file” configuration option。
extra_hosts
文件中的docker-compose.yml
使用variable substitution。
Compose使用shell环境中的变量值,其中 docker-compose运行。
要为extra_hosts
配置IP,可以在.env文件中设置值,也可以在运行export DOCKER_HOST_IP=192.168.99.100
的shell中将它们导出(例如,docker-compose
)。 / p>
您可以使用.env文件设置环境变量的默认值。 在shell环境中设置的值将覆盖.env中设置的值 文件。
.env
文件的内容:
DOCKER_HOST_IP=192.168.99.100
WINDOWS_HOST_IP=192.168.99.1
答案 1 :(得分:0)
您可以将 .env
中的变量替换为 extra_hosts
。它工作正常。
步骤:
.env
文件docker-compose.yml
文件中的变量名称实践中:
$ touch .env
内容:EXTERNAL_HOST=1.2.3.4
将额外的主机定义添加到您的 docker-compose.yml
文件中:
extra_hosts:
- "internal-host:${EXTERNAL_HOST}"
验证:
docker exec -it <container-name> /bin/bash
cat /etc/hosts
结果:
127.0.0.1 localhost
...
1.2.3.4 internal-host
...