Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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中使用变量替换_Docker_Boot2docker_Docker Compose_Docker Machine_Fig - Fatal编程技术网

无法在docker compose中使用变量替换

无法在docker compose中使用变量替换,docker,boot2docker,docker-compose,docker-machine,fig,Docker,Boot2docker,Docker Compose,Docker Machine,Fig,我使用mac来运行docker,因此我依赖boot2docker或docker机器。在容器中运行的应用程序需要docker主机的ip 我发现docker compose的变量替换功能正是我所需要的。当我尝试下面的方法时,效果很好 extra_hosts: - "somehost:162.242.195.82" 但当我尝试以下方法时: export DOCKER_HOST="64.88.225.66" extra_hosts: - "host:${DOCKER_HOS

我使用mac来运行docker,因此我依赖boot2docker或docker机器。在容器中运行的应用程序需要docker主机的ip

我发现docker compose的变量替换功能正是我所需要的。当我尝试下面的方法时,效果很好

extra_hosts:  
 - "somehost:162.242.195.82"
但当我尝试以下方法时:

export DOCKER_HOST="64.88.225.66"



extra_hosts:  
      - "host:${DOCKER_HOST}"
我得到:

$ docker-compose build --no-cache
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/code/compose/cli/main.py", line 54, in main
  File "/code/compose/cli/docopt_command.py", line 23, in sys_dispatch
  File "/code/compose/cli/docopt_command.py", line 26, in dispatch
  File "/code/compose/cli/main.py", line 169, in perform_command
  File "/code/compose/cli/command.py", line 53, in project_from_options
  File "/code/compose/cli/command.py", line 89, in get_project
  File "/code/compose/cli/command.py", line 70, in get_client
  File "/code/compose/cli/docker_client.py", line 28, in docker_client
  File "/code/.tox/py27/lib/python2.7/site-packages/docker/client.py", line 58, in __init__
  File "/code/.tox/py27/lib/python2.7/site-packages/docker/utils/utils.py", line 362, in parse_host
docker.errors.DockerException: Bind address needs a port: 64.88.225.66
docker-compose returned -1
$docker compose构建--无缓存
回溯(最近一次呼叫最后一次):
文件“”,第3行,在
文件“/code/compose/cli/main.py”,第54行,在main中
文件“/code/compose/cli/docopt_command.py”,第23行,系统调度
文件“/code/compose/cli/docopt_command.py”,第26行,在分派中
文件“/code/compose/cli/main.py”,第169行,在执行命令中
文件“/code/compose/cli/command.py”,第53行,在项目中
get_项目中第89行的文件“/code/compose/cli/command.py”
文件“/code/compose/cli/command.py”,第70行,在get_client中
文件“/code/compose/cli/docker\u client.py”,第28行,在docker\u client中
文件“/code/.tox/py27/lib/python2.7/site packages/docker/client.py”,第58行,在__
parse_host中的文件“/code/.tox/py27/lib/python2.7/site packages/docker/utils/utils.py”,第362行
docker.errors.DockerException:绑定地址需要端口:64.88.225.66
docker返回-1
我不知道为什么它需要一个港口。当我给它一个端口号时,它也不高兴


那么,如何将docker主机ip连接到容器?如果我能在extra_hosts部分传递像
boot2docker ip
docker machine ip default
这样的命令,或者如果docker compose可以执行一个脚本来获得这个值,那就太好了

问题在于
DOCKER\u HOST
DOCKER compose
本身()使用的变量,格式错误(我相信它需要
tcp://
方案和端口)

您必须选择一个不同的变量将其包含在
额外的\u主机中:


否则,您可以将其作为环境变量(
environment:[DOCKER\u HOST=]
)传入,并在容器中解析出ip地址。

啊,没错,非常感谢!如果我能做一些像额外的主机之类的事情,那就太好了:-“一些主机:
sbin/ifconfig eth0 | grep'inet addr:'| cut-d:-f2 | awk'{print$1}'