IntelliJ Idea远程调试容器中的应用

背景

    项目开发中需要利用 Spring Cloud Feign调用另一个微服务提供的接口,而所有微服务均部署在docker容器中,传统Idea本地调试方法无法进行有效调用,因此需要特殊配置实现部署环境的远程调试,该方法也适用于调试只在部署环境才能复现的故障。

步骤

    远程调试从技术上来讲,就是在本机与远程建立socket通讯,所以端口不要冲突,且本机要允许访问远程端口,另外,远程应用启动时需加开启远程连接并调试的参数。
    1、进入容器,开启JVM调试端口jdwp端口。即进入容器内部后输入jcmd 1 VM.start_java_debugging;
在这里插入图片描述
    注:第一次输入命令报错,切换noroot用户后再输入命令即可,
在这里插入图片描述
    如上图显示,Adress: *5005即为该部署应用所在容器暴露出来的端口,等会要用到。

    2、使用MobaXtern建立临时性质的调试代理
         打开SSH连接软件 MobaXterm,在左边栏找到 Tools->MobaSSHTunnel 在这里插入图片描述
     选择New SSH tunnel->Local port forwarding (将本地某个端口映射到服务器内部可访问的端口),再做如下配置
在这里插入图片描述
相关名称注释如下:
    Forward Port: 本地PC端口
    Remote Server: 容器宿主机可访问到的容器IP
    Remote Port: 容器端口
    SSH Server: 容器宿主机IP(可能是物理机或虚拟机, 任意一台容器化的服务器即可)
    SSH Port: 容器宿主机SSH端口号 默认端口22
    SSH User: 容器宿主机SSH用户名
    SSH Passowrd: 容器宿主机SSH密码

    另外,如果是密钥方式登录的服务器,在保存后还需选择添加密钥
在这里插入图片描述
确定后点击start 启动

    3、IDEA配置远程调试
        打开与运行中的应用对应的源码项目(本地代码需与git上同步)
        在Run菜单下点击Edit Configurations,左上角点击+号 选择Remote 添加一个好记的名称,
在这里插入图片描述
    然后确定shift+F9开始调试,然后就可以在源码中设置断点调试了

    4、调试示例界面
        用postman测试该接口,可在idea看到如下界面,表示远程连接已成功,代码顺利进入断点:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章