我有一个docker-compose.yml文件,包含两个服务,web和auth。
当需要进行身份验证时,Web将重定向到身份验证。其次,网络直接与auth进行对话。
因此,我的主机能够访问这两种服务是有道理的,这很有效,因为我可以为我的主机网络转发端口3000和9000.
但问题是,当应用程序直接相互通信时,我不能使用相同的localhost:9000路由,因为它位于单独的网桥上。
我可以在主机和网桥上都没有auth服务吗?我已经尝试了docker network connect container host
并明确失败了。如何让两个应用程序相互通信,同时仍然可以从外部访问它们?
答案 0 :(得分:0)
每个容器都有自己的localhost,它与运行它们的机器不同。
您可以链接容器,既指定服务名称又指定链接别名(SERVICE:ALIAS),或仅指定服务名称。例如:
web:
...
links:
- auth
- auth:ldap
auth:
...
links:
- web
链接服务的容器可以在与别名相同的主机名上访问,如果没有指定别名,则可以访问服务名称。
链接还以与depends_on相同的方式表达服务之间的依赖关系,因此它们确定了服务启动的顺序。
(cit。docker-compose docs)