Debug —— 部署微服务中微服务的配置文件及本地注册Nacos没问题但部署到Docker中就注册失败
问题摘要 在Docker中部署Nacos服务时,客户端始终连接127.0.0.1:19375端口,原因是客户端无法解析Nacos返回的容器hostname地址,导致回退到本地随机端口。通过curl检查Nacos接口发现返回的是容器内部hostname而非IP地址。最终解决方案是: 检查Nacos版本兼容性 确保客户端能正确解析服务器地址 修改容器配置后需删除旧镜像重新构建 成功实现本地Docker
·
问题



解决方案
为什么服务在docker中总是自动连的是19375阿???
- 客户端连 127.0.0.1:19375 根本不是配置写错,而是它“没能从 Nacos 拿到可解析的节点地址”,于是硬编码 fallback 到 localhost + 随机高段端口。
首先我是在本地Docker测试部署的,然后Docker中都是最小化的嘛,很多命令都是没有的。因此尽可能用本地可以直接用的命令
用命令直接在宿主机(你的电脑)上访问 Nacos 的接口,看它返回什么地址。
注意这里因为我创建nacos的时候是18375:8848,是本地的18375映射到docker中的8848,所以主机访问nacos要通过访问本地的18375端口
curl http://localhost:18375/nacos/v1/core/cluster/nodes
结果
{"code":200,"message":null,"data":[{"ip":"d566c5a53d26","port":8848,"state":"UP","extendInfo":{"raftPort":"7848","readyToUpgrade":true,"version":"2.1.0"},"address":"d566c5a53d26:8848","failAccessCnt":0,"abilities":{"remoteAbility":{"supportRemoteConnection":true},"configAbility":{"supportRemoteMetrics":false},"namingAbility":{"supportJraft":true}}}]}
不是 IP,而是随机容器 hostname,业务容器同样解析不到,于是客户端又 fallback 到 127.0.0.1:19375。
{"code":200,"message":null,"data":[{"ip":"nacos","port":8848,"state":"UP","extendInfo":{"raftPort":"7848","readyToUpgrade":true,"version":"2.1.0"},"address":"nacos:8848","failAccessCnt":0,"abilities":{"remoteAbility":{"supportRemoteConnection":true},"configAbility":{"supportRemoteMetrics":false},"namingAbility":{"supportJraft":true}}}]}
然而报错仍然一模一样
- 现在不是网络问题,而是客户端版本太旧,根本不认识 server-grpc-addr,只能去“猜”节点列表里的地址——一旦拿到 随机 hostname(bcbc5175e64d)或 127.0.0.1 就 fallback 到 127.0.0.1:19375,所以永远注册不上。



虽然仍旧报错,但是终于不是访问19375端口了!!!!!!!
- 注意:修改容器内容后记得删除原来的镜像然后重新拉取镜像,不要直接重启,用的镜像还是原来的!!!


成功本地部署
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)