记一次使用Docker 部署 SpringCloud(Alibaba),微服务在 bridge 网络无法注册 Nacos 的解决方案

为了最小成本复现问题,下文的各项配置都有简化,请自行脑补边角部分。

问题环境

docker-compose.yml

version: '3.8'

networks:
  ruibty-bridge:
    driver: bridge

services:
  ruibty-nacos:
    image: nacos/nacos-server:1.4.1
    networks:
      - ruibty-bridge
    ports:
      - "11020:8848"
    environment:
      MODE: standalone
      PREFER_HOST_MODE: hostname
  ruibty-gateway:
    image: ruibty/gateway
    networks:
      - ruibty-bridge
    depends_on:
      - ruibty-nacos
    ports:
      - "11100:11100"

application.yml

spring:
  cloud:
    nacos:
      discovery:
        server-addr: ruibty-nacos:11020

如果懒得看过程,直接看答案然后离开吧

docker-compose.yml

version: '3.8'

networks:
  ruibty-bridge:
    driver: bridge

services:
  ruibty-nacos:
    image: nacos/nacos-server:1.4.1
    networks:
      - ruibty-bridge
    ports:
      - "11020:11020"
    environment:
      MODE: standalone
      PREFER_HOST_MODE: hostname
      NACOS_APPLICATION_PORT: 11020
  ruibty-gateway:
    image: ruibty/gateway
    networks:
      - ruibty-bridge
    depends_on:
      - ruibty-nacos
    ports:
      - "11100:11100"

过程

ruibty-gateway报错

com.alibaba.nacos.api.exception.NacosException: failed to req API:/nacos/v1/ns/service/list after all servers([ruibty-nacos:11020]) tried: java.net.ConnectException: Connection refused (Connection refused)

网上搜索得到的方案基本如下

  • ruibty-nacos改为host模式。

这个没心思试,这就是“解决不了问题就修改问题问题”的套路。

  • 删除ruibty-nacos产生的data文件

试了,没用,然后跳过Docker使用IDE启动的程序是可以注册的,说明问题不在这。

探索

接下来,我们进入到ruibty-gateway中看看

docker exec -it ruibty-gateway bash

ping一下ruibty-nacos,结果返回ip172.19.0.3,证明网络是通的。

然后随便试一个ruibty-nacos的api,都不通。

curl http://ruibty-nacos:11020/nacos/v1/ns/instance
curl http://172.19.0.3:11020/nacos/v1/ns/instance

然后顺手试了一下默认,amazing! 都通!

curl http://ruibty-nacos:8848/nacos/v1/ns/instance

curl http://172.19.0.3:8848/nacos/v1/ns/instance

看来问题锁定了

是对于bridge网络的理解不到位造成的。

网络之间的通讯依赖于程序的端口,bridge转发之后的接口是用于这个网络之外的请求使用。

所以,我将nacos启动的端口号和ruibty-gateway对应上就可以了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值