在本地调试spring cloud微服务应用,应用可以注册到eureka上,应用可以通过ribbon或者zuul访问。并且在eureka上可以看到应用所对应的ip地址。
当部署到docker后,eureka不能读取应用所在ip地址,并且通过ribbon/zuul等也不能访问应用,报错如下,想请问怎么办?
I/O error on GET request for "http://API-ADMIN/microservice/1": 280d0f4200d8; nested exception is java.net.UnknownHostException: 280d0f4200d8
已在应用中配置ip地址,但是在docker环境中不可以,毕竟docker是独立的环境
eureka:
instance:
prefer-ip-address: true
原因:
分布在三台机器的docker镜像,它们的ip分别是镜像中的ip,故是不能互相想问。
解决方法:
利用Docker Swarm,配置网络。以下链接是一个具体方法。
http://blog.csdn.net/alaska_b...
当然,也可以用K8s等工具解决。但是其本质问题是网络不通造成的。