docker 环境 springcloud 微服务调试怎么做

2021-04-28 12:28:52 +08:00
 ll0504
有台测试服务器,把微服务各个模块部署到了测试服务器上的 docker 里,一个服务一个容器.各个服务会把自己的容器 ip 注册到一个 nacos 的服务容器里,测试环境各个服务之间可以通过调用容器 ip 实现访问。现在我要调试其中的一个服务 a,在本地 idea 起一个 a 服务连接到测试环境的 nacos,如果我本地的服务 a 需要调用测试环境的服务 b 的时候 ,获取的是服务 b 容器的 ip 172 开头的,这时调用会失败。

应该怎么做,我才能直接从本地能够调用容器 ip?

或者有没有其他更适合的调试方案方便我在本地起代码环境调试测试上的微服务?
1789 次点击
所在节点    Docker
4 条回复
ljhrot
2021-04-28 14:04:11 +08:00
如果确实需要通过 IDE 对测试环境进行断点调试也不是做不到,我建议你阅读一下 [spring-boot-docker]( https://spring.io/guides/gs/spring-boot-docker/) 这一篇 guide 的 **Debugging the Application in a Docker Container** 小节,配合 IDEA 的远程调试还是很不错的。

也可以直接将 springcloud 集群通过 docker 的端口映射将服务暴露出来,nacos 注册配置是可以指定服务本身的 ip,配置成宿主机 ip 就可以了,对于基于 HTTP 的 RPC 调用应该是可行的,不过我没有亲自实践过。

对生产或者测试环境 debug 更多应该依赖服务本身输出的日志,错误异常栈就是你定位问题的利器。
我觉得你应该直接把错误信息贴出来
xiayun
2021-04-28 14:30:49 +08:00
应该是容器地址与本地地址不通的问题,可以将容器网络模式调整成 host 本地网络,修改服务端口
ll0504
2021-04-28 15:43:52 +08:00
@ljhrot 你说的远程调试确实也是一种方案,我在想有没有其他不用远程调试的方案。基于 host 的容器网络的访问宿主机 ip 可以直接访问到容器,之前没有接触过 docker 这块儿,想了解一下大家相同场景都怎么解决的。
ll0504
2021-04-28 15:45:12 +08:00
@xiayun host 这个可以,你有做过这个场景下的代码调试吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/773813

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX