故障排查
自顶向下排查:先执行 docker compose ps——大多数问题都是某一个不
健康的服务,而每个服务都定义了健康检查。
Web 应用无法加载
docker compose ps
docker compose logs web --tail=100
docker compose logs api --tail=100
确认 Web 应用可通过 http://localhost:18080 访问。如果 web 已启动
但页面报错,检查浏览器控制台中失败的 /api 调用——web 容器会把
/api 代理到 API 容器。
登录失败
检查:
- API 日志(
docker compose logs api --tail=200)。 JWT_SECRET_KEY已设置且自会话签发以来未变更(轮换它会使所有会话 失效)。- 数据库迁移已完成(它们在 API 启动时运行——在 API 日志中查找 Alembic 相关行)。
- 本地演示登录(
demo@manor.local)所需的种子数据存在。
API 无法连接数据库
检查 DATABASE_URL、DATABASE_URL_SYNC 和 PostgreSQL 的健康状态:
docker compose logs postgres --tail=100
docker compose exec postgres pg_isready -U manor
如果 API 日志显示的是负载下的连接池超时错误,请回顾 配置中的连接容量说明。
Worker 任务 / 定时任务不运行
docker compose logs redis --tail=100
docker compose logs worker --tail=200
docker compose logs worker-work --tail=200
两个 worker 都必须在运行:worker 负责调度与分发(Celery beat),
worker-work 执行长计划步骤。如果定时任务触发了但步骤始终不启动,
要检查的是 worker-work。
Agent 能回答但搜索一无所获
知识搜索依赖嵌入(embedding)运行时:
docker compose logs ollama --tail=50
docker compose logs ollama-init --tail=50
ollama-init 必须已完成其一次性的 mxbai-embed-large 下载。在此
之前,RAG 会降级为纯文本匹配。在慢速网络上首次启动可能需要几分钟。
文件或知识上传失败
检查 MinIO 和 JuiceFS:
docker compose logs minio --tail=100
docker compose logs juicefs-init --tail=100
docker compose logs api --tail=200