如何在PyCharm社区版中连接Docker容器内的debugpy调试监听?
如何在PyCharm社区版中连接Docker容器内的debugpy调试监听?
你之前用Attach to Process...的方式走不通是因为这个功能是针对本地或SSH远程进程的,而debugpy本身是通过网络端口监听来等待调试连接的。PyCharm社区版虽然没有专业版的Docker专属调试配置,但可以用「Python远程调试配置」来搞定,具体步骤如下:
1. 先确认容器状态
确保你的Docker容器已经启动,进程卡在debugpy.wait_for_client()这一步(容器日志会输出Starting debug server at port 5680),同时端口映射5680:5680已经生效(可以用docker ps或lsof -i :5680命令确认本地端口在正常监听)。
2. 在PyCharm中创建远程调试配置
这是解决问题的关键,别再用Attach to Process了,新建专门的远程调试配置:
- 点击PyCharm右上角的运行配置下拉框,选择「Edit Configurations...」
- 点击左上角的
+号,找到并选择「Python Remote Debug」(社区版自带这个选项) - 配置基础参数:
- Name:随便起个好记的名字,比如「Docker debugpy 5680」
- Host:填
localhost(因为我们已经把容器的5680端口映射到本地了) - Port:填
5680
- 重点配置「Path mappings」:
这是保证断点生效的核心,必须把本地项目根目录和容器内的项目根目录做映射。比如:- 你的本地项目根目录是
/Users/yourname/code/myproject(对应docker-compose里build.context: ../../../的那个目录) - 容器内的项目根目录要看
web.dockerfile的配置:如果dockerfile里写了WORKDIR /app,并且把代码复制到了/app,那就在Path mappings里新增一行:
本地路径:/Users/yourname/code/myproject→ 容器路径:/app
(一定要根据自己的dockerfile实际配置调整路径,不能直接抄例子)
- 你的本地项目根目录是
3. 启动调试连接
保存配置后,点击「Debug」按钮(绿色小虫子图标),PyCharm会立刻尝试连接容器内的debugpy监听端口:
- 连接成功后,容器日志会输出
Debugger attached. Resuming execution.,进程会继续往下执行 - 此时你在PyCharm中设置的断点就会正常生效,操作和本地调试完全一致
为什么之前的方法失败?
- 方法1(连接容器内PID):
Attach to Process是通过进程权限关联的,本地用户和容器内的root用户权限不匹配,所以会报权限错误,而且这个方式本身就不适合debugpy的网络监听模式 - 方法2(连接Docker进程):同样是因为
Attach to Process的设计目标不是网络调试,而是本地/SSH进程,所以会被系统权限或策略阻止
备注:内容来源于stack exchange,提问作者Niko
相关产品推荐
相关产品推荐

