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

如何在PyCharm中调试运行中的Docker Python服务?

容器化Python服务调试解决方案

方法一:使用debugpy远程调试(推荐)

这是最常用的方式,能让IDE远程连接容器内的服务,同时保留服务对外的请求能力:

  1. 在Docker镜像中安装debugpy
    修改Dockerfile,添加安装命令:

    RUN pip install debugpy
    
  2. 修改容器启动命令
    将原来的启动命令(比如python app.py)替换为debugpy启动命令,开放调试端口并等待IDE连接:

    python -m debugpy --listen 0.0.0.0:5678 --wait-for-client app.py
    
    • --listen 0.0.0.0:5678:允许宿主机连接容器的5678端口(端口可自定义,只要不冲突)
    • --wait-for-client:让服务暂停启动,直到IDE连接后再运行,方便提前设置断点
  3. 配置Docker端口映射
    启动容器时,同时映射调试端口和服务端口(假设服务端口是8000):

    docker run -p 5678:5678 -p 8000:8000 [你的镜像名]
    
  4. IDE配置远程调试(以VS Code为例)
    在.vscode/launch.json中添加以下配置:

    {
        "name": "Docker远程调试",
        "type": "python",
        "request": "attach",
        "connect": {
            "host": "localhost",
            "port": 5678
        },
        "pathMappings": [
            {
                "localRoot": "${workspaceFolder}",
                "remoteRoot": "/app"  // 替换为容器内代码的实际路径
            }
        ]
    }
    

    配置完成后,启动容器,再点击IDE的Debug按钮连接,即可在代码中设置断点,同时用Postman向localhost:8000发送请求触发断点。

方法二:直接通过IDE配置Docker调试(VS Code专属)

如果你用VS Code且安装了Docker和Python插件,可以直接让IDE管理容器的调试流程:

  • 右键项目中的Dockerfile,选择「Add Debug Configuration」,IDE会自动生成包含调试逻辑的launch配置
  • 调整生成的配置,确保端口映射包含服务端口(比如8000),代码路径映射正确
  • 直接点击IDE的Debug按钮,IDE会自动构建镜像、启动容器并附加调试,此时服务端口对外可访问,断点也能正常触发

方法三:命令行pdb调试(应急方案)

如果不需要IDE图形化调试,可直接用Python内置的pdb工具:

启动容器时分配交互式终端,并以pdb模式启动服务:

docker run -it -p 8000:8000 [你的镜像名] python -m pdb app.py

启动后在pdb命令行设置断点(比如b app.py:10),然后输入c让服务继续运行,此时Postman发送请求会触发断点,在终端中进行调试。


内容的提问来源于stack exchange,提问作者sojim2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 08:52:18