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注册过去,别的微服务是不认识的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容