如何通过VSCode实现Docker容器内Python代码的远程debug调试
VSCode远程调试Docker容器内Python代码配置与问题解决
基础配置
Dockerfile配置
基础版配置如下:
FROM ubuntu as base #Do standard image stuff here #Python Debugger From base as debugger RUN pip3 install debugpy ENTRYPOINT ["python3","-m","debugpy","--listen","0.0.0.0:5678","--wait-for-client"]
也曾尝试照搬教程修改ENTRYPOINT为:
ENTRYPOINT ["python3","-m","debugpy","--listen","0.0.0.0:5678","--wait-for-client","-m"]
VSCode launch.json远程调试配置
初始配置如下:
{"name":"Python: Remote Attach","type":"python","request":"attach","connect":{"host":"5678","port":5678},"pathMappings":[{"localRoot":"${workspaceFolder}","remoteRoot":"."}]}
调试需求
- 支持单独调试单个当前打开的Python文件
- 支持通过调试器在Docker容器内运行项目启动文件
init.py
初始问题现象
使用如下命令构建并启动容器后,VSCode发起调试请求会挂起最终超时:
docker run -p 5678:5678 CONTAINERNAME python3 /home/init.py
先后尝试过先启动容器再发起调试、先发起调试再启动容器两种操作顺序,问题均存在。由于原教程配置针对python unittest模块设计,尝试去掉命令末尾的-m参数后,debugpy无法正常识别指令。
问题修复过程
更新1
修复了IP地址格式错误(此前误将点号写为逗号),解决了Python抛出的地址格式错误,但调试器连接异常问题仍然存在。
更新2
最终定位到连接问题根源:初始launch.json中错误将端口号5678填写到了host字段,将host值修改为0.0.0.0后,先运行容器再通过VSCode发起调试连接,即可正常完成调试。
内容的提问来源于stack exchange,提问作者stillQuestioning
相关产品推荐
相关产品推荐

