spring cloud gateway报错java.net.UnknownHostException: 4d59d509898a: Name or service not known
是这样的,eureka、gateway和普通的微服务在本地是OK的,
部署到docker后,通过gateway访问某个微服务就报错了。
用的是serviceId的方式,在eureka界面也能看到各个微服务都是在线的,没有问题,但就是通过gateway的路由访问时会报错。
解决方案如下:
在微服务里加上这个配置:
eureka: instance: prefer-ip-address: true
然后就OK了
估计是加上后,就把ip注册到eureka了,不加的话我看过eureka注册界面,是以docker容器的container id注册过去的,譬如container id为abcde,那么当访问该微服务时,eureka以http://abcde/xxx,去访问的,当然是访问不到该服务。配置上面的选项后,就会以内网ip加端口去访问就能访问到了。
那么为什么在本地环境是可以的呢?因为本地环境是localhost注册过去的,各个服务都能解析localhost,而docker不行,每一个docker都是独立的,把docker的container id注册过去,别的微服务是不认识的。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步