Docker教程中curl请求返回init database及404错误的原因排查
问题排查:Docker开发容器示例应用API 404异常
可能的原因及排查方向
API路径拼写错误
官方文档示例的API路径大概率是复数形式的/widgets,而非你当前请求的/widget。路径不匹配会直接导致后端路由无法识别,返回404。立刻尝试执行:curl http://localhost:8000/widgets数据库初始化未实际完成
/initdb返回"init database"仅代表接口被触发,不代表数据库表创建成功。查看rest-server容器日志,确认是否存在数据库连接或建表失败的错误:docker logs rest-server重点关注PostgreSQL连接超时、认证失败、SQL语句执行错误这类日志信息。
容器间网络连通性故障
两个容器虽显示运行,但可能不在同一Docker网络,导致rest-server无法访问db容器。进入rest-server容器测试网络连通性:# 进入rest-server容器 docker exec -it rest-server sh # 测试与db容器的网络连通 ping db # 尝试直接连接PostgreSQL psql -h db -U postgres如果ping不通或无法连接数据库,需检查容器网络配置,确保两者处于同一自定义网络或默认桥接网络且互通。
后端代码路由配置错误
若你自行构建了python-docker-dev镜像,可能存在代码路由定义错误。检查Python Web框架(如Flask)的路由代码,确认是否存在/widgets的GET请求路由。
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

