背景:

      项目框架采用 SpringBoot + Nacos, 模块之间调用采用FeignClient,服务通过Docker部署;

问题:

    服务通过Docker部署成功后,本地连接服务器Nacos注册中心模块之间相互调用没有问题,但服务器上各docker之间通过feignClient调用超时报错;

项目nacos配置如下:

spring:
  cloud:
    nacos:
      config:
        server-addr: ${CONFIG_NACOS_HOSTS:192.168.1.1:8848} 
        file-extension: yaml
        group: ${CONFIG_NACOS_GROUP:DEFAULT_GROUP}
        config-long-poll-timeout: 600000
      discovery:
        server-addr: ${DISCOVERY_NACOS_HOSTS:192.168.1.1:8848}

解决:

上述 nacos discovery 配置中加入 ip配置项如下:

spring:
  cloud:
    nacos:
      config:
        server-addr: ${CONFIG_NACOS_HOSTS:192.168.1.1:8848} # 开发时设置  CONFIG_NACOS_HOSTS 指向开发环境
        file-extension: yaml
        group: ${CONFIG_NACOS_GROUP:DEFAULT_GROUP}
        config-long-poll-timeout: 600000
      discovery:
        server-addr: ${DISCOVERY_NACOS_HOSTS:192.168.1.1:8848}
        ip: ${LOCAL_IP_ADDRESS:192.168.1.2}

ip配置的ip指向项目docker所在服务器的ip即可;

另外本地起程序调用时需屏蔽 此(ip) 配置。

以上,供参考~

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐