You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 11:03:07