Networking 从本地开发到停靠的微服务
我开始使用停靠的微服务 其中有几个正在运行(请参阅下面的代码片段)。在我的本地测试设置中,每个服务都可以在Networking 从本地开发到停靠的微服务,networking,docker,microservices,service-discovery,Networking,Docker,Microservices,Service Discovery,我开始使用停靠的微服务 其中有几个正在运行(请参阅下面的代码片段)。在我的本地测试设置中,每个服务都可以在localhost:somePort上使用。例如,前端将尝试连接到位于localhost:backend1的后端API。 现在在集装箱运输的世界里,这已经不起作用了。我是否应该运行一个完整的服务发现解决方案,如concur或etcd?或者我应该尝试使用docker的命名服务从前端访问后端吗 如果service1前端需要通过name:port访问service1后端,则需要: service1
localhost:somePort
上使用。例如,前端将尝试连接到位于localhost:backend1
的后端API。
现在在集装箱运输的世界里,这已经不起作用了。我是否应该运行一个完整的服务发现解决方案,如concur
或etcd
?或者我应该尝试使用docker的命名服务从前端访问后端吗
如果
service1前端
需要通过name:port
访问service1后端
,则需要:
service1后端
需要在其Dockerfile中指定端口公开service1 frontend
需要在撰写文件中有指向service1 backend
的链接然后在前端,您只需使用
service1 backend:port
即可访问后端如果service1 frontend
需要通过name:port
访问service1 backend
,您需要:
service1后端
需要在其Dockerfile中指定端口公开service1 frontend
需要在撰写文件中有指向service1 backend
的链接然后在前端,您只需使用
service1 backend:port
即可访问后端。您确定没有太多的服务吗?对于这个问题,只有service1 backend
和service1 frontend
相关。但是还有更多。你确定没有太多的服务吗?对于这个问题,只有service1后端
和service1前端
是相关的。但是,当使用同一服务的多个实例时,这是不够的(除非您希望有额外的服务来实现负载平衡,但不建议这样做)。然后,服务需要通过其唯一的ip(172.x.x.x)进行通信。对于一个最简单的用例来说,这很好。您还可以为每个容器使用docker提供的唯一环境变量-HOSTNAME。但是,在使用同一服务的多个实例时,这是不够的(除非您希望有额外的服务来实现负载平衡,但不建议这样做)。然后,服务需要通过其唯一的ip(172.x.x.x)进行通信。对于一个最简单的用例来说,这很好。您还可以为每个容器使用docker提供的唯一环境变量-HOSTNAME。
version: '2'
services:
service1-backend:
image: service1:0.0.1
links:
- service1-frontend
service1-frontend:
image: service1-frontend:0.0.1
links:
- service2-frontend
ports:
- "8080:80"
service2-backend:
image: service2-backend:0.0.1
links:
- service1-backend
- service2-frontend
- service3
service2-frontend:
image: service2-frontend:0.0.1
ports:
- "8081:80"
service3:
image: service3:0.0.1