Docker构建的Python API容器无法访问问题求助
问题排查与解决步骤
确认端口映射有效性
- 执行
docker ps查看容器的PORTS列,确认是否存在0.0.0.0:80->80/tcp的映射记录。若没有,需重新运行容器并添加参数-p 80:80。 - 检查PyCharm的Docker运行配置,确认「Port Bindings」已正确设置主机端口80映射到容器端口80。
- 执行
验证容器内服务状态
- 通过
docker exec -it <容器ID/名称> bash进入容器内部。 - 执行
ps aux | grep uvicorn查看uvicorn进程是否存在。若进程不存在,检查main.py中FastAPI实例是否命名为app,或是否有代码错误导致启动失败。 - 在容器内手动运行
uvicorn main:app --host 0.0.0.0 --port 80,直接查看启动时的报错信息。
- 通过
测试容器内外网络连通性
- 在容器内部执行
curl http://localhost:80或curl http://0.0.0.0:80,验证服务是否能正常响应。若容器内可访问但外部不行,优先排查主机防火墙是否拦截了80端口,或端口映射配置错误。 - 检查主机防火墙规则:Linux用
ufw status查看,Windows检查Defender防火墙入站规则。
- 在容器内部执行
核对FastAPI路由与文档路径
- 确认
main.py中是否定义了根路由(@app.get("/")),若无该路由,访问根路径会返回404,但至少应有响应;若无响应则仍为服务启动问题。 - FastAPI默认文档路径为小写的
/docs,尝试访问http://0.0.0.0:80/docs而非大写的/Docs。
- 确认
排查依赖与代码报错
- 检查
requirements.txt是否包含uvicorn和fastapi依赖,缺失会导致服务无法启动。 - 执行
docker logs <容器ID/名称>查看容器启动日志,定位是否有依赖缺失、代码语法错误等问题。
- 检查
内容的提问来源于stack exchange,提问作者Sin of Greed
相关产品推荐
相关产品推荐

