无法在 docker-compose 中使用变量替换
Unable to use variable substitution in docker-compose
我使用 mac 到 运行 docker,因此我依赖于 boot2docker 或 docker-machine 。我在容器中 运行ning 的应用程序需要 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 主机 ip 到我的容器?如果我可以在 extra_hosts 部分传递像 boot2docker ip
或 docker-machine ip default
这样的命令,或者如果 docker-compose 可以执行脚本来获取这个值,那就太好了伟大的 !
问题是DOCKER_HOST
是docker-compose
本身(https://docs.docker.com/compose/reference/overview/#docker-host)使用的变量,格式不对(需要tcp://
方案和端口我相信)。
您必须选择其他变量才能将其包含在 extra_hosts:
中。
否则你可以将它作为一个环境变量传入(environment: [DOCKER_HOST=]
)并在容器中解析出它的 ip 地址。
我使用 mac 到 运行 docker,因此我依赖于 boot2docker 或 docker-machine 。我在容器中 运行ning 的应用程序需要 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 主机 ip 到我的容器?如果我可以在 extra_hosts 部分传递像 boot2docker ip
或 docker-machine ip default
这样的命令,或者如果 docker-compose 可以执行脚本来获取这个值,那就太好了伟大的 !
问题是DOCKER_HOST
是docker-compose
本身(https://docs.docker.com/compose/reference/overview/#docker-host)使用的变量,格式不对(需要tcp://
方案和端口我相信)。
您必须选择其他变量才能将其包含在 extra_hosts:
中。
否则你可以将它作为一个环境变量传入(environment: [DOCKER_HOST=]
)并在容器中解析出它的 ip 地址。