Files
AIclinicalresearch/docs/05-部署文档/0126部署/05-前端服务部署方案.md
HaHafeng 2481b786d8 deploy: Complete 0126-27 deployment - database upgrade, services update, code recovery
Major Changes:
- Database: Install pg_bigm/pgvector plugins, create test database
- Python service: v1.0 -> v1.1, add pymupdf4llm/openpyxl/pypandoc
- Node.js backend: v1.3 -> v1.7, fix pino-pretty and ES Module imports
- Frontend: v1.2 -> v1.3, skip TypeScript check for deployment
- Code recovery: Restore empty files from local backup

Technical Fixes:
- Fix pino-pretty error in production (conditional loading)
- Fix ES Module import paths (add .js extensions)
- Fix OSSAdapter TypeScript errors
- Update Prisma Schema (63 models, 16 schemas)
- Update environment variables (DATABASE_URL, EXTRACTION_SERVICE_URL, OSS)
- Remove deprecated variables (REDIS_URL, DIFY_API_URL, DIFY_API_KEY)

Documentation:
- Create 0126 deployment folder with 8 documents
- Update database development standards v2.0
- Update SAE deployment status records

Deployment Status:
- PostgreSQL: ai_clinical_research_test with plugins
- Python: v1.1 @ 172.17.173.84:8000
- Backend: v1.7 @ 172.17.173.89:3001
- Frontend: v1.3 @ 172.17.173.90:80

Tested: All services running successfully on SAE
2026-01-27 08:13:27 +08:00

7.2 KiB
Raw Permalink Blame History

🎨 前端Nginx服务部署方案

文档版本v1.0
创建日期2026-01-26
适用范围frontend-v2 前端服务
变更类型:代码更新 + 镜像重建


📋 一、变更概述

1.1 变更内容

变更项 描述 优先级
IIT Manager Agent前端 AI对话、REDCap数据展示 🟡
ASL文献筛选UI 功能完善和优化 🟡
DC数据清洗UI 功能更新 🟡
其他UI优化 样式和交互改进 🟢

1.2 当前状态

服务名称: frontend-nginx-service
当前版本: v1.2
镜像大小: ~50MB
内网地址: http://172.17.173.80:80
技术栈:
  - React: 19
  - TypeScript: 5
  - Vite: 6
  - Ant Design: 5
  - TailwindCSS: 3

1.3 目标状态

目标版本: v1.3
预计镜像大小: ~50MB
主要更新:
  - IIT模块前端页面
  - ASL模块UI优化
  - DC模块功能完善

🚀 二、构建与部署步骤

Step 1进入前端目录

cd D:\MyCursor\AIclinicalresearch\frontend-v2

Step 2检查代码状态

# 查看Git状态
git status

# 确保代码最新
git pull origin main

Step 3本地测试构建可选

# 安装依赖
npm install

# 本地构建测试
npm run build

# 本地预览
npm run preview

Step 4构建Docker镜像

docker build -t ai-clinical_frontend-nginx:v1.3 .

# 预计时间10分钟包含React构建
# 预计大小约50MB

Step 5本地验证镜像可选

# 运行容器测试
docker run --rm -p 80:80 `
  -e BACKEND_SERVICE_HOST=172.17.173.73 `
  -e BACKEND_SERVICE_PORT=3001 `
  ai-clinical_frontend-nginx:v1.3

# 访问 http://localhost 验证

Step 6登录ACR

docker login --username=gofeng117@163.com `
  --password=fengzhibo117 `
  crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com

Step 7打标签

docker tag ai-clinical_frontend-nginx:v1.3 `
  crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.3

Step 8推送到ACR

docker push `
  crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.3

# 预计时间3分钟镜像约50MB
# 成功标志:看到 "digest: sha256:..."

Step 9SAE部署

  1. 登录SAEhttps://sae.console.aliyun.com/
  2. 进入应用:frontend-nginx-service
  3. 点击【部署应用】
  4. 配置:
    • 镜像地址:选择 ai-clinical_frontend-nginx
    • 镜像版本:选择 v1.3
  5. 点击【确认】
  6. 等待部署完成约3-5分钟

Step 10检查环境变量

确保环境变量正确:

BACKEND_SERVICE_HOST=172.17.173.73  # 后端内网IP
BACKEND_SERVICE_PORT=3001

注意如果后端部署后IP变化需要更新此变量

Step 11验证部署

# 通过公网访问
curl http://8.140.53.236/

# 或访问域名
curl https://iit.xunzhengyixue.com/

# 检查静态资源加载
# 浏览器访问并打开开发者工具查看Network

📋 三、一键部署脚本

PowerShell脚本

frontend-v2/update-and-deploy.ps1

# 前端Nginx一键更新脚本
# 使用方法: .\update-and-deploy.ps1 v1.3

param(
    [Parameter(Mandatory=$true)]
    [string]$Version
)

$ErrorActionPreference = "Stop"

Write-Host "========================================" -ForegroundColor Green
Write-Host "开始更新前端Nginx到版本: $Version" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green

# 1. 构建镜像包含React build
Write-Host "`n[1/3] 构建Docker镜像包含React构建..." -ForegroundColor Cyan
docker build -t ai-clinical_frontend-nginx:$Version .
if ($LASTEXITCODE -ne 0) {
    Write-Host "❌ 构建失败!" -ForegroundColor Red
    exit 1
}
Write-Host "✅ 镜像构建成功!" -ForegroundColor Green

# 2. 打标签
Write-Host "`n[2/3] 打标签..." -ForegroundColor Cyan
$ImageUrl = "crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:$Version"
docker tag ai-clinical_frontend-nginx:$Version $ImageUrl
Write-Host "✅ 标签已打!" -ForegroundColor Green

# 3. 推送到ACR
Write-Host "`n[3/3] 推送到ACR..." -ForegroundColor Cyan
Write-Host "推送地址: $ImageUrl" -ForegroundColor Yellow
docker push $ImageUrl
if ($LASTEXITCODE -ne 0) {
    Write-Host "❌ 推送失败!" -ForegroundColor Red
    exit 1
}

Write-Host "`n========================================" -ForegroundColor Green
Write-Host "✅ 前端镜像已推送成功!" -ForegroundColor Green
Write-Host "========================================" -ForegroundColor Green
Write-Host "`n下一步操作:" -ForegroundColor Yellow
Write-Host "1. 登录SAE控制台: https://sae.console.aliyun.com/" -ForegroundColor Yellow
Write-Host "2. 进入应用: frontend-nginx-service" -ForegroundColor Yellow
Write-Host "3. 检查环境变量如果后端IP有变化" -ForegroundColor Red
Write-Host "   BACKEND_SERVICE_HOST=<后端新IP>" -ForegroundColor Red
Write-Host "4. 点击【部署应用】" -ForegroundColor Yellow
Write-Host "5. 选择镜像版本: $Version" -ForegroundColor Yellow
Write-Host "6. 确认部署" -ForegroundColor Yellow
Write-Host "`n镜像地址VPC:" -ForegroundColor Cyan
Write-Host "crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:$Version" -ForegroundColor Cyan

⚠️ 四、注意事项

4.1 Windows换行符问题

之前v1.1部署遇到过CRLF问题确保

  1. docker-entrypoint.sh 使用Unix换行符LF
  2. 检查方法:
    # 检查是否有CRLF
    (Get-Content docker-entrypoint.sh -Raw) -match "`r`n"
    # 如果返回True需要转换
    
  3. 转换方法:
    (Get-Content docker-entrypoint.sh -Raw) -replace "`r`n", "`n" | Set-Content -NoNewline docker-entrypoint.sh
    

4.2 后端IP变更处理

如果后端部署后IP变化

  1. 获取新的后端内网IP
  2. 更新前端环境变量:
    BACKEND_SERVICE_HOST=<新IP>
    
  3. 使用【重启应用】不是部署IP不会变

4.3 缓存问题

前端更新后用户可能看到旧版本:

  • 告知用户使用 Ctrl+F5 强制刷新
  • 或清除浏览器缓存

🔄 五、回滚方案

如果v1.3出现问题回滚到v1.2

  1. 登录SAE控制台
  2. 进入应用:frontend-nginx-service
  3. 点击【部署应用】
  4. 选择镜像版本:v1.2
  5. 确认部署

六、验证清单

部署前验证

  • 本地 npm run build 成功
  • Docker镜像构建成功
  • ACR推送成功

部署后验证

  • SAE部署成功
  • 公网可访问
  • 静态资源加载正常
  • API代理正常前端→后端
  • IIT模块页面可访问
  • ASL模块功能正常
  • DC模块功能正常

📊 七、时间估算

步骤 预计时间
构建Docker镜像 10分钟
推送到ACR 3分钟
SAE部署 5分钟
验证测试 5分钟
总计 23分钟

最后更新2026-01-26
维护人员:开发团队