You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

无法将PyCharm调试器连接至Docker化FastAPI应用的问题排查

Docker容器中FastAPI应用PyCharm远程调试连接失败排查

我正在尝试为Docker容器内的FastAPI应用配置PyCharm Professional远程调试,但多次尝试后始终无法建立连接。以下是相关配置和现象:

配置信息

IDE host Name: host.docker.internal
Port: 5678
Path Mapping: {project_path} =/app

Python调试代码

try:
    import pydevd_pycharm
    pydevd_pycharm.settrace('host.docker.internal', port=5678, stdoutToServer=True, stderrToServer=True)
    logger.info("Debugger attached")
    logger.info("Starting program service")
except Exception as e:
    logger.info(f"Exception during debugger setup: {e}")

Docker Compose配置

app:
  <<: *common_config
  environment:
    <<: *env_vars
  ports:
    - 8000:8000

操作步骤

  • 先启动PyCharm调试器
  • 再运行docker compose up启动容器

当前现象

日志仅输出导入pydevd_pycharm的信息,无后续调试连接或异常日志:

app-1 | 2024-11-26T15:58:15.177832Z [info ] Importing pydev_pycharm [code.api.main] dd.span_id=0 dd.trace_id=0

排查方向与解决建议

1. 网络连通性问题

  • 验证容器内能否解析host.docker.internal:进入容器执行ping host.docker.internal,若不通,Linux环境需在docker-compose.yml中添加额外配置:
    extra_hosts:
      - "host.docker.internal:host-gateway"
    
  • 检查主机防火墙是否放行5678端口,可临时关闭防火墙测试连通性。

2. pydevd-pycharm安装问题

  • 确认容器内Python环境已安装对应版本的pydevd-pycharm:进入容器执行pip list查看,未安装则在Dockerfile中添加RUN pip install pydevd-pycharm~=2024.3(版本需与PyCharm版本匹配)。

3. 调试代码超时配置

  • 当前代码卡在settrace调用但无异常输出,可添加超时参数触发错误日志:
    pydevd_pycharm.settrace('host.docker.internal', port=5678, stdoutToServer=True, stderrToServer=True, timeout=5)
    

4. PyCharm配置细节

  • 检查5678端口是否被其他程序占用:Linux/macOS用lsof -i :5678,Windows用netstat -ano | findstr :5678
  • 确认路径映射准确性:本地{project_path}必须是项目根目录,且与容器内/app的文件结构完全一致。

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

火山引擎 最新活动