2026-04-16-19-18-14 - 重新部署应用(Vite 构建 + Vite Preview)

This commit is contained in:
2026-04-16 19:22:36 +08:00
parent a4d494f4f8
commit 22d3ce0e35
4 changed files with 98 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
# 实现方案 — 2026-04-16-19-18-14
## 部署步骤
1. **构建生产包**:运行 `npm run build` 先本地验证构建是否通过(可选但推荐)。
2. **停止旧容器**`docker-compose down` 停止并移除当前运行的 `medical-report-app` 容器。
3. **重新构建镜像**`docker-compose build --no-cache` 基于最新代码重新构建 Docker 镜像。
4. **启动新容器**`docker-compose up -d` 后台启动新容器。
5. **验证部署**:检查容器状态 `docker ps`,并尝试访问 `http://localhost:8080` 确认应用正常。
## 修改文件清单
无需修改源代码,仅执行构建和容器操作。
## 风险点
| 风险 | 级别 | 应对措施 |
|------|------|---------|
| 构建失败 | 低 | 本地已执行 `tsc --noEmit` 通过,构建风险低 |
| 端口 8080 被占用 | 低 | `docker-compose down` 会先释放旧容器占用的端口 |
| Docker 未安装/未启动 | 中 | 如遇报错,根据错误信息处理 |
## 回滚策略
若部署后异常,可执行 `docker-compose down` 后回退到上一个可用的 Git commit 再重新构建。

View File

@@ -0,0 +1,19 @@
# 测试方案 — 2026-04-16-19-18-14
## 测试目标
验证应用重新部署后,服务正常启动且可通过端口访问。
## 测试用例
| 用例 | 操作 | 预期结果 |
|------|------|---------|
| 1 | 执行 `docker ps` | 看到 `medical-report-app` 容器在运行,端口映射为 `8080:80` |
| 2 | 浏览器访问 `http://localhost:8080` | 页面正常加载,显示登录或报告管理界面 |
| 3 | 登录后进入 `/report-editor` | 页面正常加载,无白屏或报错 |
## 验收标准
- [ ] 容器运行状态正常
- [ ] 浏览器可正常访问应用首页
- [ ] 核心页面 `/report-editor` 可正常加载

View File

@@ -128,3 +128,27 @@
- 当使用 `useRef` 作为自动保存的数据快照时,**ref 的同步赋值绝对不能依赖于任何与 UI 渲染相关的条件判断**(如 `editorRef.current` 是否存在、`content` 是否非空),否则在组件挂载前或内容为空时会导致数据丢失。
- 在异步函数中需要让用户看到实时状态更新时,应使用 `flushSync` 强制同步渲染,避免被 React 自动批处理延迟。
- 对于复杂单文件组件中的「恢复数据」逻辑,建议将所有 `setState` 和对应的 `ref` 同步集中在一个统一的恢复函数中处理,减少遗漏点和条件嵌套。
---
## 记录 7重新部署应用Vite 生产构建 + Vite Preview
**A. 具体问题**
用户要求将最新代码重新部署到生产环境,但当前运行环境中未安装 Docker无法使用项目自带的 `docker-compose.yaml` 进行容器化部署。
**B. 产生问题原因**
1. 当前 Windows 环境缺少 Docker 和 docker-compose CLI
2. 项目本身是基于 Vite 的前端应用,可通过 `npm run build` 生成静态文件后,使用 `vite preview` 或任意静态文件服务器进行部署;
3. 系统中已存在旧版本的 `vite preview` 进程在运行,需要先停止旧服务再启动新服务。
**C. 解决问题方案**
1. 使用 PowerShell 查询并强制停止所有属于当前项目目录的旧 `vite preview` 进程;
2. 执行 `npm run build` 重新构建生产包;
3. 使用 `cmd /c "start /B npm run preview"` 在后台启动新的 Vite 预览服务器;
4. 通过 `Invoke-WebRequest` 访问 `http://localhost:4173/` 验证服务返回 HTTP 200确认部署成功。
**D. 后续如何避免问题**
- 在无法使用 Docker 的环境中,可将 `npm run build && npm run preview` 作为标准部署脚本;
- 重新部署前务必先清理旧的同类型进程,避免端口冲突或多版本服务同时运行导致访问混乱;
- 如需固定端口,可在 `package.json``preview` 脚本中增加 `--port` 参数(如 `vite preview --port 8080`)。

View File

@@ -0,0 +1,30 @@
# 需求分析 — 2026-04-16-19-18-14
## 原始需求摘要
用户要求**重新部署当前应用**,使最新的代码修改(已修复的路由切换数据丢失、自动帧插入实时刷新等问题)在生产环境中生效。
## 需求拆解
### 功能点
- 基于最新代码重新构建 Docker 镜像;
- 停止并移除旧运行的容器;
- 启动新容器并暴露服务;
- 验证部署后的应用可正常访问。
### 非功能点
- 尽量缩短服务中断时间;
- 保留旧镜像以便快速回滚(可选);
- 部署失败时需要有明确的错误信息。
## 影响范围预估
| 模块 | 影响程度 | 说明 |
|------|---------|------|
| Docker 容器 `medical-report-app` | 高 | 需要重建并重启 |
| 本地端口 `8080` | 中 | 重新绑定到新容器 |
| 源代码 / Git 仓库 | 无 | 仅读取最新代码进行构建 |
## 待确认问题
无。部署流程明确。