docs: CLAUDE.md新增部署注意事项(compose项目名互删事故/静态文件build/1Panel反代/同页多挂件/工作区干净)

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-30 16:07:01 +08:00
parent ae812d9932
commit 6033538cf6
+21
View File
@@ -72,6 +72,27 @@ bash deploy.sh # docker compose 构建并启动,健康检查 127.0.0.1:8017
- 聊天演示页 `/`,管理后台 `/admin`,健康检查 `/health`。
- 挂件嵌入官网指引:`docs/embed-guide.md`。
## 部署注意事项(血泪教训,勿重蹈覆辙)
线上完整手册见 `docs/deploy-production.md`(环境/反代配置/发版流程/踩坑实录)。
以下是最容易再犯的坑:
1. **⚠️ compose 项目名(互删事故根因,勿删 `name:` 行)**:1Panel 站点目录都叫
`index`,docker compose 默认以目录名为项目名——曾与汽车项目
(`chat.agent.hnxinyouhe.com/index`)撞名成同一 project "index",导致
**任一目录 down/up 互删对方容器**(起一个、另一个 502)。已在 compose 固定
`name: hs-ai-kefu` 根治。**任何部署到 1Panel 的新项目都必须显式设置
compose 项目名**;汽车项目(仍叫 index)若再出新互斥,同样加 `name:` 解决。
2. **挂件静态文件打进镜像**:改 `static/` 必须 `docker compose build`,仅 `up -d` 不生效。
3. **1Panel 反代**:面板配完反代需确认主 conf(`conf.d/<域名>.conf`)里有
`include .../proxy/*.conf;` 行;WebSocket 走 `proxy/ws.conf`(单套升级头,
重复两套会被 uvicorn 拒成 426);改后 `nginx -t` 再 reload。
4. **同页面嵌多个挂件**(如官网同时挂汽车+建材客服):两挂件源自同一代码,
`sessionStorage` 邀请卡 key(`widget_invite_dismissed_<path>`)与 host id
(`cc-widget-host`)**同名互相干扰**——需要同页共存时先给全局命名加项目前缀。
5. **服务器上不许有未提交改动**:`git status` 应干净;改动请进 git 再部署,
避免回到 stash 时代(pull 冲突)。
## 上线观察期(第一周必做)
上线不是终点。**上线后第一周**跑 `scripts/breach_rate.py` 观测双向偏差: