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看到如下界面,表示遠程連接已成功,代碼順利進入斷點:
在這裏插入圖片描述

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