Docker 里跑排障运行时,我先核对这几个点

把一套带代码检索的排障运行时丢进 Docker 之后,失败很少发生在「容器没起来」,更多是起来了但 Case 是空的。最近把 RootSeeker V2 在国内网络下过了一遍,下面按实际排查顺序记,不按官方 README 抄。

当前文档版本是 v1.3.2。它不是聊天窗口,而是:告警或粘贴堆栈 → Case → playbook 规划 MCP 工具 → 日志 / Trace / 代码索引 → 报告。所以验证不能只看 docker compose ps 全绿。

国内机器不要走错安装入口

同一仓库有两套外壳:setup.ps1 / setup.sh 走 Docker Hub;setup-cn.ps1 / setup-cn.sh 会设 ROOTSEEKER_SETUP_REGION=cn,镜像优先从杭州 ACR 拉预构建包。国内环境用后者,否则卡在 Zoekt / GitNexus 编译或 Hub 限流,看起来像「向导挂了」。

真正编排的是 scripts/setup_wizard.py。进度在 .setup-state.json,中断后 --resume 比重头跑干净。--pull 表示用预构建镜像;--status 只打印步骤,适合判断卡在拉包还是健康检查。

克隆后先 cp .env.docker .env,再跑国内向导。Windows 非交互可以:

powershell 复制代码
.\setup-cn.ps1 --yes --path docker --storage mysql --pull

Linux / macOS:

bash 复制代码
chmod +x setup-cn.sh
./setup-cn.sh --yes --path docker --storage mysql --pull

没有 Docker 时向导会问 SQLite、便携 MySQL 或已有实例。便携 MySQL 听 127.0.0.1:3307,数据在 .tools/mysql-data/,就是为了避开系统 3306。--storage existing-mysql 再加 --yes 时,默认连 127.0.0.1:3306 和库用户 rootseeker,本机没有这个库会直接失败,不像交互模式那样会问你。

健康检查顺序比「全绿」更有用

默认可以不配外网大模型:Compose 里的 MySQL + hash embedding 就能把栈撑起来。ROOTSEEKER_LLM_* 只影响报告文案,不影响 Case 能不能建。

我建议按依赖从外到内看:

  1. API:8000/healthz。这里挂了,后面的 Admin 和排障都不用看。
  2. Admin:8010/admin。v1.3.2 登录后会先到站点首页,控制台仍是 /admin。错误排查助手、仓库同步、MCP 工具列表都在控制台。
  3. 索引:Zoekt 6070(搜索)和 6071(远程索引)、Qdrant 6333、GitNexus 7474。这三套没就绪,堆栈对不上仓库,报告会像「模型在猜」。
  4. 跑一次默认流程:Admin 里粘贴堆栈,或 POST /cases/run-default。Webhook、这个 API、助手三条入口会并成同一个 Case。通知走渠道模板,Agent 不会自己决定 notify.send。

只改 Python、索引仍放容器时,Windows 用 .\scripts\start-local.ps1。它把本机 repos 映射进 Zoekt / GitNexus。映射两端不是同一目录时,检索能命中、报告里的路径却打不开------这是 hybrid 模式最高频的问题,优先对 ROOTSEEKER_ZOEKT_PATH_MAP 和 ROOTSEEKER_GITNEXUS_PATH_MAP。

看起来在跑、其实在用错存储

旧 .env 里如果还留着 ROOTSEEKER_STORAGE_BACKEND=sqlite,会覆盖 Compose 默认的 mysql。表现是容器正常,Case 却不在你连的那台 MySQL 里。对照 .env.docker 改回 mysql 即可。

卸载脚本是全清:停进程、down -v、删 .env、.venv、.tools、data/*。镜像和源码会留。还想留 Case 时不要跑 uninstall。

Case 失败时看错误码,不要只看容器状态。缺 planner、工具超时、索引未就绪,会进 failed 并带原因,不会退回已经删掉的 YAML 步进器。这是有意的:值班需要可解释的失败,而不是「还在跑但什么都没查」。

索引要接真实向量时,再把 ROOTSEEKER_EMBEDDING_PROVIDER 从 hash 改成 OpenAI 兼容接口。报告要模型润色时再配 LLM。两步都可以后补。

这套东西适合已经有日志和监控、缺的是「现场 + 代码命中 + 结论」收成一条可回放 Case 的团队。它还不是交钥匙 ChatOps:Agent 自修复和审批策略仍是部分完成。先把索引和默认 playbook 跑通,比一上来调提示词有用。

项目在 Gitee,路径是 icey_1/root-seeker-v2,许可证 MIT。

相关推荐
回家路上绕了弯41 分钟前
如何提升 AI 生成代码的可读性:让代码更容易理解、审查和维护
后端
我叫黑大帅41 分钟前
为了研究Redis 三大守护神,我做了一个本地模拟!
redis·后端·面试
newerp42 分钟前
GC 触发时机与调优
后端·程序员·go
PC2005_cloud42 分钟前
Spring Boot 事务回滚方法
前端·后端
颜进强42 分钟前
装了个 AI Skill 却查不了数据?一篇讲透 Skill 调用接口的三种方式(scripts / CLI / MCP)
前端·后端·ai编程
程序员cxuan43 分钟前
WorkBuddy + ima 搭建本地知识库
人工智能·后端·程序员
鱼弦43 分钟前
模型服务热加载实战:如何在不停服的情况下更新模型权重?
后端
暗不需求43 分钟前
Docker 入门:从「光盘与 DVD」到全栈项目容器化实战
docker·容器·面试
晚安日记wanna43 分钟前
订单30分钟未支付自动取消:定时任务为什么被面试官嫌弃
redis·后端·面试