如何在桥接网络和主机网络上创建服务?

时间:2016-04-28 00:13:48

标签: docker docker-compose

我有一个docker-compose.yml文件,包含两个服务,web和auth。

当需要进行身份验证时,Web将重定向到身份验证。其次,网络直接与auth进行对话。

因此,我的主机能够访问这两种服务是有道理的,这很有效,因为我可以为我的主机网络转发端口3000和9000.

但问题是,当应用程序直接相互通信时,我不能使用相同的localhost:9000路由,因为它位于单独的网桥上。

我可以在主机和网桥上都没有​​auth服务吗?我已经尝试了docker network connect container host并明确失败了。如何让两个应用程序相互通信,同时仍然可以从外部访问它们?

1 个答案:

答案 0 :(得分:0)

每个容器都有自己的localhost,它与运行它们的机器不同。

您可以链接容器,既指定服务名称又指定链接别名(SERVICE:ALIAS),或仅指定服务名称。例如:

web: 
  ...
  links:
   - auth
   - auth:ldap

auth:
  ...
  links:
  - web
  

链接服务的容器可以在与别名相同的主机名上访问,如果没有指定别名,则可以访问服务名称。

     

链接还以与depends_on相同的方式表达服务之间的依赖关系,因此它们确定了服务启动的顺序。

(cit。docker-compose docs