feat(deploy): Complete PostgreSQL migration and Docker image build

Summary:
- PostgreSQL database migration to RDS completed (90MB SQL, 11 schemas)
- Frontend Nginx Docker image built and pushed to ACR (v1.0, ~50MB)
- Python microservice Docker image built and pushed to ACR (v1.0, 1.12GB)
- Created 3 deployment documentation files

Docker Configuration Files:
- frontend-v2/Dockerfile: Multi-stage build with nginx:alpine
- frontend-v2/.dockerignore: Optimize build context
- frontend-v2/nginx.conf: SPA routing and API proxy
- frontend-v2/docker-entrypoint.sh: Dynamic env injection
- extraction_service/Dockerfile: Multi-stage build with Aliyun Debian mirror
- extraction_service/.dockerignore: Optimize build context
- extraction_service/requirements-prod.txt: Production dependencies (removed Nougat)

Deployment Documentation:
- docs/05-部署文档/00-部署进度总览.md: One-stop deployment status overview
- docs/05-部署文档/07-前端Nginx-SAE部署操作手册.md: Frontend deployment guide
- docs/05-部署文档/08-PostgreSQL数据库部署操作手册.md: Database deployment guide
- docs/00-系统总体设计/00-系统当前状态与开发指南.md: Updated with deployment status

Database Migration:
- RDS instance: pgm-2zex1m2y3r23hdn5 (2C4G, PostgreSQL 15.0)
- Database: ai_clinical_research
- Schemas: 11 business schemas migrated successfully
- Data: 3 users, 2 projects, 1204 literatures verified
- Backup: rds_init_20251224_154529.sql (90MB)

Docker Images:
- Frontend: crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0
- Python: crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0

Key Achievements:
- Resolved Docker Hub network issues (using generic tags)
- Fixed 30 TypeScript compilation errors
- Removed Nougat OCR to reduce image size by 1.5GB
- Used Aliyun Debian mirror to resolve apt-get network issues
- Implemented multi-stage builds for optimization

Next Steps:
- Deploy Python microservice to SAE
- Build Node.js backend Docker image
- Deploy Node.js backend to SAE
- Deploy frontend Nginx to SAE
- End-to-end verification testing

Status: Docker images ready, SAE deployment pending
This commit is contained in:
2025-12-24 18:21:55 +08:00
parent 5fa7b0bbe1
commit b64896a307
134 changed files with 4185 additions and 53 deletions

View File

@@ -0,0 +1,699 @@
# 🚀 AI临床研究平台 - 部署进度总览
> **文档用途**:统一展示项目部署状态、资源信息、操作手册索引
> **更新时间**2024-12-24
> **维护人员**:开发团队
---
## 📊 一、部署进度一览表
| 服务名称 | 部署状态 | 镜像版本 | 部署位置 | 完成时间 | 操作文档 |
|---------|---------|---------|---------|---------|---------|
| **PostgreSQL数据库** | ✅ 已完成 | PostgreSQL 15 | RDS | 2024-12-24 | [08-PostgreSQL数据库部署操作手册.md](./08-PostgreSQL数据库部署操作手册.md) |
| **前端Nginx服务** | ✅ 已完成 | v1.0 | SAE待部署 | 2024-12-24 | [07-前端Nginx-SAE部署操作手册.md](./07-前端Nginx-SAE部署操作手册.md) |
| **Python微服务** | ✅ 镜像已推送 | v1.0 | SAE待部署 | 2024-12-24 | 待创建 |
| **Node.js后端** | ⏳ 待开始 | - | - | - | - |
| **Dify AI服务** | ⏳ 待开始 | - | - | - | - |
**图例说明**
- ✅ 已完成:服务已成功部署并验证
- 🔄 进行中:正在部署或配置
- ⏳ 待开始:尚未开始
---
## 🔑 二、阿里云资源速查表
### 2.1 ACR容器镜像仓库
**基本信息**
- **命名空间**`ai-clinical`
- **Registry地址公网**`crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com`
- **Registry地址VPC**`crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com`
- **用户名**`gofeng117@163.com`
- **密码**`fengzhibo117`
**镜像仓库列表**
| 仓库名称 | 最新版本 | 镜像大小 | 公网地址 | VPC地址 |
|---------|---------|---------|---------|---------|
| **python-extraction** | v1.0 | 1.12GB | `crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0` | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0` |
| **ai-clinical_frontend-nginx** | v1.0 | ~50MB | `crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0` | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0` |
| **nodejs-backend** | - | - | `crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/nodejs-backend` | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/nodejs-backend` |
---
### 2.2 VPC网络与NAT网关
**VPC信息**
- **VPC ID**`vpc-2ze055cptkew9c38w4r06`
- **VPC名称**`ai-clinical-vpc`
- **网段**`172.17.0.0/16`
- **地域**华北2北京
- **交换机1**`vsw-2zevacop039bxrmj6yc0c`可用区F
- **交换机2**`vsw-2zehoeyw9ldncymcyvfwq`可用区A
- **安全组ID**`sg-2zedk6fi8sgmmcwdu7tu`
**NAT网关信息**
- **NAT网关名称**`NAT_airesearch`
- **NAT网关ID**`ngw-2zeec9ulzgw7ywvx1pst6`
- **公网IPEIP**`182.92.176.14`
- **SNAT表ID**`stb-2zesszmzx1qpwf1cb2bry`
- **SNAT条目**覆盖所有交换机允许VPC内资源访问公网
---
### 2.3 RDS PostgreSQL数据库
**实例信息**
- **实例ID**`pgm-2zex1m2y3r23hdn5`
- **规格**2核4GBpg.n2.2c.1m
- **存储空间**100GBSSD云盘
- **PostgreSQL版本**15.0
- **内网地址**`pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432`
- **外网地址**`pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com`(⚠️ 已关闭)
- **最大连接数**400
- **时区**Asia/Shanghai
- **白名单**172.17.0.0/16VPC网段
**数据库配置**
- **数据库名**`ai_clinical_research`
- **用户名**`airesearch`
- **密码**`Xibahe@fengzhibo117`
- **字符集**UTF8
- **排序规则**en_US.utf8
**Schema架构**11个业务Schema
| Schema名称 | 功能模块 | 表数量 | 说明 |
|-----------|---------|-------|------|
| `platform_schema` | 平台核心 | 8 | 用户、权限、任务队列pg-boss |
| `asl_schema` | 系统文献筛查 | 6 | 项目、文献、筛查记录 |
| `aia_schema` | AI智能摘要 | 5 | AI项目、摘要任务 |
| `dc_schema` | 数据清洗 | 6 | 工具A/B/C数据处理 |
| `pkb_schema` | 个人知识库 | 5 | 文献管理、笔记 |
| `admin_schema` | 系统管理 | 0 | 预留 |
| `rvw_schema` | 文献回顾 | 0 | 预留 |
| `ssa_schema` | 智能统计分析 | 0 | 预留 |
| `st_schema` | 统计工具 | 0 | 预留 |
| `common_schema` | 公共模块 | 0 | 预留 |
| `information_schema` | 系统元数据 | - | PostgreSQL标准 |
**关键数据量**截至2024-12-24
- 用户3条
- AI项目2条
- 文献1204条
- 筛查记录783条
- pg-boss任务350条
**连接字符串格式**
```
postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research
```
⚠️ 注意:密码中的 `@` 需要URL编码为 `%40`
---
### 2.4 SAE Serverless应用
**命名空间**
- **命名空间ID**`cn-beijing:test-airesearch`
- **地域**华北2北京
**已部署/待部署应用列表**
| 应用名称 | 状态 | 规格 | 实例数 | 端口 | 内网地址 | 公网地址 |
|---------|------|------|-------|------|---------|---------|
| **python-extraction** | 镜像已推送 | 1核2GB | 1 | 8000 | 待部署后填写 | 待部署后填写 |
| **nodejs-backend** | 待构建 | 2核4GB | 1 | 3001 | 待部署后填写 | 待部署后填写 |
| **frontend-nginx** | 镜像已推送 | 1核2GB | 1 | 80 | 待部署后填写 | 待部署后填写 |
---
### 2.5 OSS对象存储
**Bucket信息**
- **Bucket名称**`ai-clinical-research`
- **地域**华北2北京
- **存储类型**:标准存储
- **访问控制**:私有
- **存储冗余类型**:同城冗余存储
- **内网Endpoint**`oss-cn-beijing-internal.aliyuncs.com`
- **公网Endpoint**`oss-cn-beijing.aliyuncs.com`
- **Bucket域名内网**`ai-clinical-research.oss-cn-beijing-internal.aliyuncs.com`
- **创建时间**2025-12-16 20:22
**RAM用户访问凭证**用于OSS写入
- **RAM用户名**`oss-bucket-put-object@1991407246109125.onaliyun.com`
- **AccessKeyId**`LTAI5tB2Dt3NdvBL3G7nYGv7`
- **AccessKeySecret**`1iSN9k39RkApP93QjUhC1DcPIeMG4V`
- **UID**`203256565888301026`
- **创建时间**2025-12-16 20:31:41
⚠️ **安全警告**AccessKey是敏感信息请勿提交到公开Git仓库
**存储用途**
- `/uploads/pdfs/` - PDF文件上传
- `/uploads/docx/` - Word文档上传
- `/uploads/txt/` - 文本文件上传
- `/exports/` - 导出文件临时存储
---
---
### 2.6 镜像配置文件存储位置
**前端Nginx服务**
```
AIclinicalresearch/frontend-v2/
├── Dockerfile ✅ 已提交Git多阶段构建
├── .dockerignore ✅ 已提交Git优化构建上下文
├── nginx.conf ✅ 已提交GitNginx配置
└── docker-entrypoint.sh ✅ 已提交Git启动脚本
镜像存储位置:
公网crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0
VPCcrpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0
```
**Python微服务**
```
AIclinicalresearch/extraction_service/
├── Dockerfile ✅ 已提交Git多阶段构建 + 阿里云源)
├── .dockerignore ✅ 已提交Git优化构建上下文
└── requirements-prod.txt ✅ 已提交Git精简依赖列表
镜像存储位置:
公网crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0
VPCcrpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0
```
**Node.js后端**(待构建):
```
AIclinicalresearch/backend/
├── Dockerfile ⏳ 待创建
├── .dockerignore ⏳ 待创建
└── (配置文件) ⏳ 待确认
镜像存储位置(预留):
公网crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/nodejs-backend:v1.0
VPCcrpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/nodejs-backend:v1.0
```
**Git提交规范**
| 文件类型 | 是否提交Git | 说明 |
|---------|------------|------|
| ✅ Dockerfile | 必须提交 | 镜像构建蓝图,团队协作必需 |
| ✅ .dockerignore | 必须提交 | 优化构建性能,避免传输无用文件 |
| ✅ requirements*.txt / package.json | 必须提交 | 依赖清单,可复现构建 |
| ✅ nginx.conf / 配置文件 | 必须提交 | 服务配置 |
| ❌ .env | 禁止提交 | 敏感信息密码、API密钥 |
| ❌ Docker镜像文件.tar | 禁止提交 | 镜像文件很大存储在ACR云端 |
---
## 📦 三、已部署服务详情
### 3.1 PostgreSQL数据库
**部署概要**
- **部署时间**2024-12-24
- **部署方式**`pg_dump` 全量导出 → RDS导入
- **数据迁移时长**约12秒90MB SQL文件
- **验证状态**:✅ Schema完整、数据一致、关系正确
**关键配置**
```bash
# 本地PostgreSQL Docker容器
docker run --name ai-clinical-postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=ai_clinical_research \
-p 5432:5432 \
-d postgres:15-alpine
```
**备份信息**
- **本地备份文件**`AIclinicalresearch/rds_init_20251224_154529.sql`90MB
- **备份内容**完整Schema + 全量数据
- **RDS自动备份**每日凌晨2点保留7天
**操作文档**
- [08-PostgreSQL数据库部署操作手册.md](./08-PostgreSQL数据库部署操作手册.md) - 完整部署流程
- [PostgreSQL部署策略-摸底报告.md](./PostgreSQL部署策略-摸底报告.md) - 数据库分析报告
**重要提示**
- ⚠️ **安全**:外网访问已关闭,生产环境禁止长期开启
- ⚠️ **连接**需通过VPC内网或SSH隧道连接
- ⚠️ **密码**:环境变量中的 `@` 需转义为 `%40`
---
### 3.2 前端Nginx服务
**镜像信息**
- **仓库名称**`ai-clinical_frontend-nginx`
- **镜像版本**`v1.0`
- **镜像大小**约50MB
- **基础镜像**`nginx:alpine`
- **构建时间**2024-12-24
**镜像功能**
- ✅ 托管React单页应用SPA
- ✅ Nginx反向代理API请求
- ✅ 支持动态环境变量注入
- ✅ Gzip压缩优化
- ✅ 健康检查端点
**构建产物**
- **Dockerfile**`AIclinicalresearch/frontend-v2/Dockerfile`
- **Nginx配置**`AIclinicalresearch/frontend-v2/nginx.conf`
- **.dockerignore**`AIclinicalresearch/frontend-v2/.dockerignore`
**SAE配置建议**
- **CPU/内存**1核 / 2GB
- **实例数**1
- **端口**80
- **健康检查**`GET /` 返回200
- **环境变量**
```bash
VITE_API_BASE_URL=http://nodejs-backend-service.cn-beijing:test-airesearch.svc.cluster.local:3001
```
⚠️ 注意内网地址需在SAE部署后获取
**操作文档**
- [07-前端Nginx-SAE部署操作手册.md](./07-前端Nginx-SAE部署操作手册.md) - 完整SAE部署步骤
- [06-前端Nginx-SAE容器部署指南.md](./06-前端Nginx-SAE容器部署指南.md) - 技术架构详解
**部署状态**
- ✅ Docker镜像构建成功
- ✅ 镜像已推送至ACR
- ⏳ 待部署到SAE
---
### 3.3 Python微服务
**镜像信息**
- **仓库名称**`python-extraction`
- **镜像版本**`v1.0`
- **镜像大小**1.12GB
- **基础镜像**`python:3-slim`
- **构建时间**2024-12-24
**功能模块**
- ✅ **PDF文本提取**PyMuPDF 1.26.7
- ✅ **Docx文档提取**Mammoth + python-docx
- ✅ **数据清洗DC工具**pandas 2.0+ / numpy 1.24+ / polars 0.19+
- ✅ **语言检测**langdetect
- ❌ **Nougat OCR**已移除减小镜像1.5GB
**依赖优化**
```txt
# 精简版依赖requirements-prod.txt
- 移除nougat-ocr (1.5GB)
- 移除albumentations (Nougat依赖)
- 保留pandas、numpy、polarsDC工具必需
- 保留PyMuPDF、pdfplumberPDF提取
```
**健康检查**
- **端点**`GET /api/health`
- **响应示例**
```json
{
"status": "healthy",
"checks": {
"pymupdf": {"available": true, "version": "1.26.7"},
"nougat": {"available": false, "error": "Nougat未安装"},
"temp_dir": {"path": "/tmp/extraction_service", "writable": true}
}
}
```
**SAE配置建议**
- **CPU/内存**1核 / 2GB
- **实例数**1
- **端口**8000
- **启动命令**默认Dockerfile中的CMD
- **健康检查**`GET /api/health` 返回200
- **环境变量**
```bash
LOG_LEVEL=INFO
TEMP_DIR=/tmp/extraction_service
```
⚠️ 生产环境建议根据实际负载调整实例数
**构建产物**
- **Dockerfile**`AIclinicalresearch/extraction_service/Dockerfile`
- **依赖文件**`AIclinicalresearch/extraction_service/requirements-prod.txt`
- **.dockerignore**`AIclinicalresearch/extraction_service/.dockerignore`
**关键技术方案**
- ✅ 使用阿里云Debian镜像源解决apt-get网络问题
- ✅ 多阶段构建(优化镜像大小)
- ✅ 运行时依赖安装libgl1、libglib2.0
**操作文档**
- [04-Python微服务-SAE容器部署指南.md](./04-Python微服务-SAE容器部署指南.md) - 技术架构详解
- 待创建Python微服务SAE部署操作手册
**部署状态**
- ✅ Docker镜像构建成功本地测试通过
- ✅ 镜像已推送至ACR
- ⏳ 待部署到SAE
---
## ⚡ 四、快速命令参考
### 4.1 Docker镜像管理
**登录ACR**
```bash
# 使用公网地址登录
docker login --username=gofeng117@163.com \
--password=fengzhibo117 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
```
**拉取镜像**
```bash
# 前端Nginx
docker pull crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0
# Python微服务
docker pull crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0
```
**本地测试**
```bash
# 前端Nginx端口3000
docker run -d -p 3000:80 \
-e VITE_API_BASE_URL=http://localhost:3001 \
--name frontend-test \
ai-clinical_frontend-nginx:v1.0
# Python微服务端口8000
docker run -d -p 8000:8000 \
--name python-test \
python-extraction:v1.0
# 查看日志
docker logs -f frontend-test
docker logs -f python-test
# 健康检查
curl http://localhost:3000 # 前端
curl http://localhost:8000/api/health # Python微服务
```
**构建新版本**
```bash
# 前端Nginx
cd AIclinicalresearch/frontend-v2
docker build -t ai-clinical_frontend-nginx:v1.1 .
docker tag ai-clinical_frontend-nginx:v1.1 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.1
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.1
# Python微服务
cd AIclinicalresearch/extraction_service
docker build -t python-extraction:v1.1 -f Dockerfile .
docker tag python-extraction:v1.1 \
crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.1
docker push crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.1
```
---
### 4.2 数据库连接与管理
**通过本地Docker容器连接RDS**
```bash
# 启动本地PostgreSQL容器用于psql客户端
docker run --name ai-clinical-postgres \
-e POSTGRES_PASSWORD=postgres \
-p 5432:5432 \
-d postgres:15-alpine
# 连接到RDS需临时开启外网或使用VPC
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" \
ai-clinical-postgres psql \
-h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \
-p 5432 \
-U airesearch \
-d ai_clinical_research
# 查看Schema列表
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" \
ai-clinical-postgres psql \
-h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \
-p 5432 -U airesearch -d ai_clinical_research \
-c "SELECT nspname FROM pg_namespace WHERE nspname LIKE '%_schema' ORDER BY nspname;"
# 查看表数量统计
docker exec -e PGPASSWORD="Xibahe@fengzhibo117" \
ai-clinical-postgres psql \
-h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \
-p 5432 -U airesearch -d ai_clinical_research \
-c "SELECT schemaname, COUNT(*) FROM pg_tables WHERE schemaname NOT IN ('pg_catalog', 'information_schema') GROUP BY schemaname;"
```
**数据库备份**
```bash
# 导出完整数据库
docker exec ai-clinical-postgres pg_dump \
-U postgres \
-d ai_clinical_research \
--format=plain \
--no-owner \
--no-acl \
--encoding=UTF8 \
> "backup_$(date +%Y%m%d_%H%M%S).sql"
# 导入到RDS需临时开启外网
cat backup_20241224_154529.sql | \
docker exec -i -e PGPASSWORD="Xibahe@fengzhibo117" \
ai-clinical-postgres psql \
-h pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com \
-p 5432 -U airesearch -d ai_clinical_research
```
**Node.js应用连接字符串**
```bash
# .env 文件配置
DATABASE_URL="postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research"
# 注意:@ 符号需要URL编码为 %40
```
---
### 4.3 SAE常用操作
**通过阿里云CLI部署**(可选):
```bash
# 安装阿里云CLI
# https://help.aliyun.com/document_detail/121541.html
# 配置访问凭证
aliyun configure
# 部署应用(示例)
aliyun sae DeployApplication \
--AppId xxx \
--ImageUrl crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.0 \
--Namespace cn-beijing:xxx
```
**通过Web控制台部署**(推荐):
1. 登录阿里云SAE控制台
2. 选择应用 → 部署应用
3. 选择镜像版本
4. 配置环境变量
5. 确认部署
---
## ⚠️ 五、注意事项与最佳实践
### 5.1 安全规范 🔒
**数据库安全**
- ❌ **禁止**RDS外网地址长期开启
- ✅ **推荐**使用VPC内网或SSH隧道连接
- ✅ **白名单**仅允许必要的IP访问
- ✅ **密码强度**:使用复杂密码(大小写+数字+特殊字符)
**镜像仓库安全**
- ❌ **禁止**在代码中硬编码ACR密码
- ✅ **推荐**定期轮换Registry密码每季度
- ✅ **访问控制**:仅团队成员拥有推送权限
**环境变量管理**
- ❌ **禁止**在Git中提交 `.env` 文件
- ✅ **推荐**使用SAE的环境变量配置功能
- ✅ **敏感信息**数据库密码、API密钥等使用环境变量
**SSL/TLS**
- ✅ 生产环境必须启用HTTPS
- ✅ 使用阿里云免费SSL证书或Let's Encrypt
---
### 5.2 部署顺序 📋
**推荐的部署顺序**
1. ✅ **基础设施**VPC、NAT网关、安全组
2. ✅ **数据库**RDS PostgreSQL数据迁移+验证)
3. ✅ **对象存储**OSS Bucket创建+权限配置
4. 🔄 **后端服务**
- Python微服务文档提取+数据清洗)
- Node.js后端API服务器
5. 🔄 **前端服务**Nginx静态资源托管
6. 🔄 **AI服务**Dify部署
7. 🔄 **验证测试**:全链路功能验证
**依赖关系**
```
RDS PostgreSQL (必需)
Node.js 后端 (依赖数据库)
Python 微服务 (可独立,但后端会调用)
前端 Nginx (依赖后端API)
Dify AI (可独立)
```
---
### 5.3 回滚策略 🔄
**镜像版本管理**
- ACR保留所有历史版本v1.0, v1.1, v1.2...
- 使用语义化版本号:`major.minor.patch`
- 生产环境使用固定版本号,禁止使用 `:latest`
**SAE应用回滚**
- SAE支持一键回滚到上一版本
- 回滚时长约1-2分钟
- 建议:部署前先在测试环境验证
**数据库回滚**
- RDS自动备份每日凌晨2点保留7天
- 手动备份:重大变更前务必手动备份
- 回滚时长取决于数据量约10分钟/10GB
---
### 5.4 监控与日志 📊
**应用监控**(建议配置):
- **健康检查**:每个服务配置健康检查端点
- **日志收集**SAE自动收集stdout/stderr日志
- **告警规则**CPU>80%、内存>80%、健康检查失败
**日志查看**
```bash
# SAE控制台 → 应用详情 → 日志查询
# 或使用阿里云CLI
aliyun sae DescribeApplicationInstances --AppId xxx
```
**性能指标**
- **响应时间**API平均响应<500ms
- **错误率**<1%
- **可用性**>99.9%
---
### 5.5 成本优化 💰
**SAE资源配置**
- **开发环境**0.5核 / 1GB约¥30/月)
- **生产环境**1核 / 2GB约¥60/月)
- **弹性伸缩**:根据流量自动扩缩容
**RDS成本**
- **按量付费**:测试阶段使用
- **包年包月**生产环境更优惠约¥800/月)
**OSS成本**
- **存储费用**约¥0.12/GB/月
- **流量费用**内网流量免费外网流量¥0.5/GB
---
## 📝 六、待办事项清单
### 高优先级 🔴
- [ ] **Python微服务**部署到SAE并验证
- [ ] **Python微服务**创建SAE部署操作手册
- [ ] **Node.js后端**Docker镜像构建
- [ ] **Node.js后端**部署到SAE
### 中优先级 🟡
- [ ] **前端Nginx**部署到SAE并配置域名
- [ ] **内网通信**配置前端→后端→Python微服务的内网调用
- [ ] **SSL证书**申请并配置HTTPS
- [ ] **监控告警**配置SAE健康检查和告警规则
### 低优先级 🟢
- [ ] **Dify AI**:评估部署方案
- [ ] **负载测试**:压力测试各服务性能
- [ ] **文档完善**:补充故障排查手册
- [ ] **CI/CD**:配置自动化部署流程
---
## 📚 七、相关文档索引
### 部署指南
- [01-快速部署SOP-零基础版.md](./01-快速部署SOP-零基础版.md) - **完整部署流程总纲**
- [02-SAE部署完全指南(产品经理版).md](./02-SAE部署完全指南(产品经理版).md) - SAE基础知识
### 服务部署手册
- [07-前端Nginx-SAE部署操作手册.md](./07-前端Nginx-SAE部署操作手册.md) - 前端Nginx部署步骤
- [08-PostgreSQL数据库部署操作手册.md](./08-PostgreSQL数据库部署操作手册.md) - PostgreSQL部署步骤
- 待创建Python微服务SAE部署操作手册
- 待创建Node.js后端SAE部署操作手册
### 技术架构文档
- [00-部署架构总览.md](./00-部署架构总览.md) - 架构设计与技术选型
- [04-Python微服务-SAE容器部署指南.md](./04-Python微服务-SAE容器部署指南.md) - Python服务技术详解
- [06-前端Nginx-SAE容器部署指南.md](./06-前端Nginx-SAE容器部署指南.md) - 前端Nginx技术详解
### 分析报告
- [PostgreSQL部署策略-摸底报告.md](./PostgreSQL部署策略-摸底报告.md) - 数据库结构分析
---
## 🔄 八、更新日志
### 2024-12-24
- ✅ PostgreSQL数据库部署完成
- ✅ 前端Nginx Docker镜像构建并推送至ACR
- ✅ Python微服务Docker镜像构建并推送至ACR
- ✅ 创建部署进度总览文档
---
## 📞 九、联系与支持
**技术支持**
- 开发团队内部文档
- 阿里云工单https://workorder.console.aliyun.com/
**紧急联系**
- 数据库问题:先检查 [08-PostgreSQL数据库部署操作手册.md]
- SAE部署问题先检查 [01-快速部署SOP-零基础版.md]
- 镜像构建问题:查看本文档"快速命令参考"章节
---
> **提示**:本文档会随着部署进度持续更新,请定期查看最新版本!
> **最后更新**2024-12-24