/我在mac上使用docker beta并在service-a/docker-compose.yml
中设置了一些服务:
version: '2'
services:
service-a:
# ...
ports:
- '4000:80'
然后我在/etc/hosts
中设置了以下内容:
::1 service-a.here
127.0.0.1 service-a.here
我有nginx
服务器运行代理service-a.here
到localhost:4000
。
所以在我的Mac上我可以运行:curl http://service-a.here
。一切都很好。
现在,我正在构建另一项服务service-b/docker-compose.yml
:
version: '2'
services:
service-b:
# ...
ports:
- '4001:80'
environment:
SERVICE_A_URL: service-a.here
service-b
需要service-a
才能完成以下任务:
$SERVICE_A_URL
service-a
$SERVICE_A_URL
执行HTTP请求
醇>
使用此设置,只有重定向(1.)有效。 HTTP请求(2.)不起作用,因为service-b
容器
在它的DNS中没有service-a.here
的概念。
我尝试使用service-a.here
配置变量添加add_hosts
,但我不知道要将其设置为什么。 localhost
当然不起作用。
请注意,我真的希望将docker-compose文件分开(加入它们不会解决我的问题),因为它们都已经在其中运行了很多服务。
是否有办法从docker容器内访问localhost上的DNS解析,以便例如curl service-a.here
可以在容器内部工作?
答案 0 :(得分:0)
您可以使用'链接' docker-compose.yml文件中的指令,用于自动解析容器service-b中的地址。
service-b:
image: blabla
links:
- service-a:service-a
service-a:
image: blablabla
您现在将在service-b的/ etc / hosts中有一行:
service-a 172.17.0.X
请注意,service-a将在编写应用程序时在service-b之前创建。我不确定在指定特殊IP之后你怎么做,但Docker的文档做得很好。希望这是你想要的。