Docker容器中FastAPI应用VSCode调试器无法运行求助
排查思路与解决方案
1. 确认容器内已安装debugpy
你将应用打包为wheel安装,debugpy默认不会包含在你的应用依赖中,需确保容器内已安装该工具:
- 修改Dockerfile,在安装wheel包前添加
RUN pip install debugpy - 或者在项目的开发依赖文件(如requirements-dev.txt)中加入debugpy,构建时同步安装
2. 检查容器启动命令的执行报错
手动启动容器并验证命令是否正常执行:
- 启动容器进入交互模式:
docker run -it --rm -p 5678:5678 -p 8000:8000 fastapiapp:debug bash - 在容器内手动运行调试命令:
观察是否有报错(如找不到debugpy模块、找不到fast_api_app.main模块等)python -m debugpy --listen 0.0.0.0:5678 --wait-for-client -m fast_api_app.main
3. 验证FastAPI应用本身可正常启动
暂时移除--wait-for-client参数,修改task.json中的command:
"command": "python -m debugpy --listen 0.0.0.0:5678 -m fast_api_app.main"
重新启动容器,访问localhost:8000确认FastAPI是否正常运行,排除应用自身启动问题
4. 检查模块启动方式是否正确
如果你的FastAPI应用是通过uvicorn启动(而非main.py内直接调用uvicorn.run),调试命令需调整为直接调用uvicorn:
"command": "python -m debugpy --listen 0.0.0.0:5678 --wait-for-client -m uvicorn fast_api_app.main:app --host 0.0.0.0 --port 8000"
确保fast_api_app.main中存在名为app的FastAPI实例
5. 修正路径映射配置
launch.json中的remoteRoot需指向容器内应用代码的实际路径(而非.):
- 在容器内执行
pip show fast_api_app查看Location字段(如/usr/local/lib/python3.10/site-packages) - 修改pathMappings:
"pathMappings": [ { "localRoot": "${workspaceFolder}/src/fast_api_app", "remoteRoot": "/usr/local/lib/python3.10/site-packages/fast_api_app" } ]
6. 检查容器端口映射是否生效
执行docker ps查看容器端口映射状态,确认5678和8000端口已正确绑定到主机
内容的提问来源于stack exchange,提问作者Fabian
相关产品推荐
相关产品推荐

