无法在docker compose中使用变量替换
我使用mac来运行docker,因此我依赖boot2docker或docker机器。在容器中运行的应用程序需要docker主机的ip 我发现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
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}'
”