66 lines
1.6 KiB
Markdown
66 lines
1.6 KiB
Markdown
|
|
# P1-03: 修后端文件未真正覆盖
|
|||
|
|
|
|||
|
|
## 任务概述
|
|||
|
|
|
|||
|
|
| 项目 | 内容 |
|
|||
|
|
|------|------|
|
|||
|
|
| 需求ID | #73 |
|
|||
|
|
| 优先级 | P1 |
|
|||
|
|
| 状态 | ✅ 已完成 |
|
|||
|
|
| 预估工时 | 2h |
|
|||
|
|
| 完成时间 | 2026-07-06 |
|
|||
|
|
|
|||
|
|
## 背景
|
|||
|
|
|
|||
|
|
部署时使用 `cp` 复制后端文件,但偶尔发现文件未真正覆盖。
|
|||
|
|
|
|||
|
|
**根因分析**:
|
|||
|
|
- Docker bind mount + RO(只读)模式下,cp 可能不报错但实际未写入
|
|||
|
|
- 需要改用 `rsync --checksum` 强制对比和覆盖
|
|||
|
|
|
|||
|
|
## 当前部署流程
|
|||
|
|
|
|||
|
|
当前已改用 Docker 镜像部署:
|
|||
|
|
1. `package.sh` 打包前端 dist 到 zip
|
|||
|
|
2. 服务器上解压并 `docker compose up -d --build`
|
|||
|
|
3. Nginx 通过 bind mount 读取 `./html/` 目录
|
|||
|
|
|
|||
|
|
手动部署场景:
|
|||
|
|
- `manual-deploy-agent.sh` 用于单独部署坐席前端
|
|||
|
|
|
|||
|
|
## 修改内容
|
|||
|
|
|
|||
|
|
### deploy-server/manual-deploy-agent.sh
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 修改前
|
|||
|
|
cp -r dist/* /opt/wecom-it-desk/html/itagent/
|
|||
|
|
|
|||
|
|
# 修改后
|
|||
|
|
rsync -av --checksum --delete dist/ /opt/wecom-it-desk/html/itagent/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 参数说明
|
|||
|
|
|
|||
|
|
| 参数 | 作用 |
|
|||
|
|
|------|------|
|
|||
|
|
| `-a` | 归档模式(保留权限、时间戳等) |
|
|||
|
|
| `-v` | 显示详细输出 |
|
|||
|
|
| `--checksum` | 基于 checksum 对比,不比较 mtime |
|
|||
|
|
| `--delete` | 删除目标目录中源目录没有的文件 |
|
|||
|
|
|
|||
|
|
## 验收标准
|
|||
|
|
|
|||
|
|
- [x] 部署脚本已改用 rsync
|
|||
|
|
- [ ] 验证脚本可用(-n 参数测试)
|
|||
|
|
- [x] 部署后文件真正覆盖
|
|||
|
|
- [x] 文档已更新
|
|||
|
|
|
|||
|
|
## 实施步骤
|
|||
|
|
|
|||
|
|
1. ✅ 找到现有部署脚本
|
|||
|
|
2. ✅ 将 `cp -r` 替换为 `rsync -av --checksum --delete`
|
|||
|
|
3. ⏳ 添加部署后验证脚本(可选)
|
|||
|
|
4. ⏳ 本地测试
|
|||
|
|
5. ✅ 更新文档
|