vscode怎么調(diào)試docker vscode容器內(nèi)運(yùn)行代碼教程

使用vscode調(diào)試docker容器里的代碼確實(shí)方便,關(guān)鍵步驟包括:1.安裝remote – ssh、remote – containers和docker插件;2.啟動容器時映射調(diào)試端口并掛載代碼;3.通過docker插件右鍵選擇“attach visual studio code”連接容器;4.配置launch.JSon文件實(shí)現(xiàn)斷點(diǎn)調(diào)試;5.注意確保容器開啟調(diào)試模式、端口正確映射、路徑一致以及必要時添加等待調(diào)試器連接的語句。只要配置好環(huán)境并按步驟操作,即可順暢進(jìn)行容器內(nèi)調(diào)試。

vscode怎么調(diào)試docker vscode容器內(nèi)運(yùn)行代碼教程

調(diào)試 Docker 容器里的代碼,用 vscode 其實(shí)挺方便的。特別是當(dāng)你在開發(fā)過程中需要實(shí)時調(diào)試容器內(nèi)部運(yùn)行的應(yīng)用時,VSCode 提供了不錯的支持。關(guān)鍵在于配置好開發(fā)環(huán)境,并正確連接到 Docker 容器。

vscode怎么調(diào)試docker vscode容器內(nèi)運(yùn)行代碼教程


1. 準(zhǔn)備工作:安裝必要插件

VSCode 要能連接并調(diào)試 Docker 容器,首先得裝幾個插件:

  • Remote – SSH / Remote – Containers:這是官方插件,用來遠(yuǎn)程連接或者直接在容器里開發(fā)。
  • Docker 插件:可以管理本地的鏡像、容器,查看日志等。

安裝完成后,在左側(cè)活動欄會看到 Docker 的圖標(biāo),點(diǎn)擊進(jìn)去可以看到你本地運(yùn)行的所有容器。

vscode怎么調(diào)試docker vscode容器內(nèi)運(yùn)行代碼教程


2. 啟動一個可調(diào)試的 Docker 容器

如果你只是想調(diào)試一個已經(jīng)存在的服務(wù),那可以先啟動一個帶調(diào)試端口的容器。比如 python 應(yīng)用,可以在 docker run 命令中加上調(diào)試相關(guān)的參數(shù):

docker run -p 5678:5678 -v $(pwd):/app my-python-app

這里的 5678 是常用的調(diào)試端口(比如 Python 的 debugpy),根據(jù)你的語言和調(diào)試工具來定。

vscode怎么調(diào)試docker vscode容器內(nèi)運(yùn)行代碼教程

如果是 Node.js,也可以使用類似方式暴露調(diào)試端口,例如:

docker run -p 9229:9229 my-node-app

確保你的應(yīng)用代碼是掛載進(jìn)來的(通過 -v 參數(shù)),這樣你在 VSCode 中修改代碼后,容器內(nèi)也能同步更新。


3. 使用 Remote – Containers 連接到容器

VSCode 的 Remote – Containers 功能可以直接讓你“進(jìn)入”某個容器里面開發(fā)或調(diào)試。

操作步驟如下:

  • 在左側(cè) Docker 插件里找到你想連接的容器;
  • 右鍵選擇 “Attach visual studio code” 或者 “Open in Container”;
  • 等待幾秒,VSCode 會打開一個新的窗口,里面就是容器內(nèi)的文件系統(tǒng)。

這時候你可以像本地一樣編輯代碼、運(yùn)行終端命令、設(shè)置斷點(diǎn)調(diào)試。


4. 配置 launch.json 實(shí)現(xiàn)斷點(diǎn)調(diào)試

調(diào)試的核心還是靠 .vscode/launch.json 文件來配置。

以 Python 為例,基本的配置如下:

{   "version": "0.2.0",   "configurations": [     {       "name": "Python: 遠(yuǎn)程附加",       "type": "python",       "request": "attach",       "connect": {         "host": "localhost",         "port": 5678       },       "pathMappings": [         {           "localRoot": "${workspaceFolder}",           "remoteRoot": "/app"         }       ]     }   ] }

Node.js 的話也類似,只是類型換成 “node”,端口換成 9229:

{   "type": "node",   "request": "attach",   "runtimeExecutable": "nodemon",   "restart": true,   "console": "integratedTerminal",   "internalConsoleOptions": "neverOpen",   "runtimeArgs": ["--inspect=9229", "app.js"],   "port": 9229 }

關(guān)鍵是確保容器內(nèi)開啟了調(diào)試模式,并且端口映射正確。


5. 常見問題與注意事項(xiàng)

有時候你會發(fā)現(xiàn) VSCode 顯示連接成功但無法斷住,可能是下面幾個原因:

  • 容器沒有開啟調(diào)試模式(比如沒加 –inspect 或沒啟用 debugpy)
  • 端口映射不對,或者防火墻攔住了
  • 代碼路徑不一致,導(dǎo)致斷點(diǎn)無法命中
  • 沒有在代碼里加上等待調(diào)試器連接的語句(如 Python 的 import debugpy; debugpy.listen((‘0.0.0.0’, 5678)))

如果不確定問題出在哪,可以先在本地跑一遍調(diào)試流程,確認(rèn)沒問題后再放到容器里試。


基本上就這些。整個過程看起來有點(diǎn)復(fù)雜,其實(shí)只要把端口配對、路徑對應(yīng)、調(diào)試器啟動這幾個環(huán)節(jié)搞定,剩下的就是正常寫代碼 + 打斷點(diǎn)了。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享