Files
AIclinicalresearch/docs/05-部署文档/00-部署进度总览.md
HaHafeng decff0bb1f docs(deploy): Complete full system deployment to Aliyun SAE
Summary:
- Successfully deployed complete system to Aliyun SAE (2025-12-25)
- All services running: Python microservice + Node.js backend + Frontend Nginx + CLB
- Public access available at http://8.140.53.236/

Major Achievements:
1. Python microservice deployed (v1.0, internal IP: 172.17.173.66:8000)
2. Node.js backend deployed (v1.3, internal IP: 172.17.173.73:3001)
   - Fixed 4 critical issues: bash path, config directory, pino-pretty, ES Module
3. Frontend Nginx deployed (v1.0, internal IP: 172.17.173.72:80)
4. CLB load balancer configured (public IP: 8.140.53.236)

New Documentation (9 docs):
- 11-Node.js backend SAE deployment config checklist (21 env vars)
- 12-Node.js backend SAE deployment operation manual
- 13-Node.js backend image fix record (config directory)
- 14-Node.js backend pino-pretty fix
- 15-Node.js backend deployment success summary
- 16-Frontend Nginx deployment success summary
- 17-Complete deployment practical manual 2025 edition (1800 lines)
- 18-Deployment documentation usage guide
- 19-Daily update quick operation manual (670 lines)

Key Fixes:
- Environment variable name correction: EXTRACTION_SERVICE_URL (not PYTHON_SERVICE_URL)
- Dockerfile fix: added COPY config ./config
- Logger configuration: conditional pino-pretty for dev only
- Health check fix: ES Module compatibility (require -> import)

Updated Files:
- System status document updated with full deployment info
- Deployment progress overview updated with latest IPs
- All 3 Docker services' Dockerfiles and configs refined

Verification:
- All health checks passed
- Tool C 7 features working correctly
- Literature screening module functional
- Response time < 1 second

BREAKING CHANGE: Node.js backend internal IP changed from 172.17.173.71 to 172.17.173.73

Closes #deployment-milestone
2025-12-25 21:24:37 +08:00

32 KiB
Raw Blame History

🚀 AI临床研究平台 - 部署进度总览

文档用途:统一展示项目部署状态、资源信息、操作手册索引
更新时间2025-12-24 18:55
维护人员:开发团队


📖 文档导航指南

🎯 下次部署应该看哪个文档?

🔥 完整部署(强烈推荐)

实战版部署手册2025-12-25新增

  • 17-完整部署实战手册-2025版.md - 基于实际部署经历编写,包含所有坑点和解决方案!
    • 完整的部署流程3.5小时)
    • 所有遇到的4个问题及解决方案
    • 关键经验总结
    • 可直接复制的配置和命令
    • 适合快速部署和重新部署

零基础版部署手册

如何选择

  • 🎯 要快速部署 → 看 17-完整部署实战手册-2025版.md(推荐)
  • 📚 要学习原理 → 看 01-快速部署SOP-零基础版.md
  • 🔍 查询资源信息 → 看本文档00-部署进度总览.md

Node.js 后端部署

主文档(必读)

配置参考(必备)

快速了解(推荐)

问题修复参考

Python 微服务部署

前端 Nginx 部署

PostgreSQL 数据库


📊 一、部署进度一览表

服务名称 部署状态 镜像版本 部署位置 完成时间 操作文档
PostgreSQL数据库 已完成 PostgreSQL 15 RDS 2025-12-24 08-PostgreSQL数据库部署操作手册.md
前端Nginx服务 已完成 v1.0 SAE运行中 2025-12-25 07-前端Nginx-SAE部署操作手册.md
Python微服务 已完成 v1.0 SAE轻量版 2025-12-24 09-Python微服务-SAE部署操作手册.md
Node.js后端 已完成 v1.3 SAE运行中 2025-12-25 12-Node.js后端-SAE部署操作手册.md
Dify AI服务 待开始 - - - -

图例说明

  • 已完成:服务已成功部署并验证
  • 🔄 进行中:正在部署或配置
  • 待开始:尚未开始

🔑 二、阿里云资源速查表

2.1 ACR容器镜像仓库

基本信息

  • 命名空间ai-clinical
  • Registry地址公网crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com
  • Registry地址VPCcrpi-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
backend-service v1.3 838MB crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3 crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.3

2.2 VPC网络与NAT网关

VPC信息

  • VPC IDvpc-2ze055cptkew9c38w4r06
  • VPC名称ai-clinical-vpc
  • 网段172.17.0.0/16
  • 地域华北2北京
  • 交换机1vsw-2zevacop039bxrmj6yc0c可用区F
  • 交换机2vsw-2zehoeyw9ldncymcyvfwq可用区A
  • 安全组IDsg-2zedk6fi8sgmmcwdu7tu

NAT网关信息

  • NAT网关名称NAT_airesearch
  • NAT网关IDngw-2zeec9ulzgw7ywvx1pst6
  • 公网IPEIP182.92.176.14
  • SNAT表IDstb-2zesszmzx1qpwf1cb2bry
  • SNAT条目覆盖所有交换机允许VPC内资源访问公网

2.3 RDS PostgreSQL数据库

实例信息

  • 实例IDpgm-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标准

关键数据量截至2025-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应用

命名空间

  • 命名空间IDcn-beijing:test-airesearch
  • 地域华北2北京

已部署/待部署应用列表

应用名称 状态 规格 实例数 端口 内网地址 公网地址
python-extraction-test 运行中 1核2GB 1 8000 http://172.17.173.66:8000 无(仅内网)
nodejs-backend-test 运行中 1核2GB 1 3001 http://172.17.173.71:3001 无(仅内网)
frontend-nginx-service 运行中 0.5核1GB 1 80 http://172.17.173.72:80 无(仅内网)

2.5 OSS对象存储

Bucket信息

  • Bucket名称ai-clinical-research
  • 地域华北2北京
  • 存储类型:标准存储
  • 访问控制:私有
  • 存储冗余类型:同城冗余存储
  • 内网Endpointoss-cn-beijing-internal.aliyuncs.com
  • 公网Endpointoss-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
  • AccessKeyIdLTAI5tB2Dt3NdvBL3G7nYGv7
  • AccessKeySecret1iSN9k39RkApP93QjUhC1DcPIeMG4V
  • UID203256565888301026
  • 创建时间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             ✅ 已提交Git改进版方案B本地编译+Docker打包
├── .dockerignore         ✅ 已提交Git优化构建上下文
├── prisma/schema.prisma  ✅ 已同步RDS32个模型+30+关系字段)
└── tsconfig.json         ✅ 已优化(排除测试文件)

镜像存储位置:
公网crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.0
VPCcrpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.0

镜像摘要sha256:a4ffb61c15af1cd1ed9de187b4464a1aab773918e5b41b4df5b8ad96514f9941

Git提交规范

文件类型 是否提交Git 说明
Dockerfile 必须提交 镜像构建蓝图,团队协作必需
.dockerignore 必须提交 优化构建性能,避免传输无用文件
requirements*.txt / package.json 必须提交 依赖清单,可复现构建
nginx.conf / 配置文件 必须提交 服务配置
.env 禁止提交 敏感信息密码、API密钥
Docker镜像文件.tar 禁止提交 镜像文件很大存储在ACR云端

📦 三、已部署服务详情

3.1 PostgreSQL数据库

部署概要

  • 部署时间2025-12-24
  • 部署方式pg_dump 全量导出 → RDS导入
  • 数据迁移时长约12秒90MB SQL文件
  • 验证状态 Schema完整、数据一致、关系正确

关键配置

# 本地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.sql90MB
  • 备份内容完整Schema + 全量数据
  • RDS自动备份每日凌晨2点保留7天

操作文档

重要提示

  • ⚠️ 安全:外网访问已关闭,生产环境禁止长期开启
  • ⚠️ 连接需通过VPC内网或SSH隧道连接
  • ⚠️ 密码:环境变量中的 @ 需转义为 %40

3.2 前端Nginx服务

镜像信息

  • 仓库名称ai-clinical_frontend-nginx
  • 镜像版本v1.0
  • 镜像大小约50MB
  • 基础镜像nginx:alpine
  • 构建时间2025-12-24

镜像功能

  • 托管React单页应用SPA
  • Nginx反向代理API请求
  • 支持动态环境变量注入
  • Gzip压缩优化
  • 健康检查端点

构建产物

  • DockerfileAIclinicalresearch/frontend-v2/Dockerfile
  • Nginx配置AIclinicalresearch/frontend-v2/nginx.conf
  • .dockerignoreAIclinicalresearch/frontend-v2/.dockerignore

SAE配置建议

  • CPU/内存1核 / 2GB
  • 实例数1
  • 端口80
  • 健康检查GET / 返回200
  • 环境变量
    VITE_API_BASE_URL=http://nodejs-backend-service.cn-beijing:test-airesearch.svc.cluster.local:3001
    
    ⚠️ 注意内网地址需在SAE部署后获取

操作文档

部署状态

  • Docker镜像构建成功
  • 镜像已推送至ACR
  • 待部署到SAE

3.3 Node.js后端服务

镜像信息

  • 仓库名称backend-service
  • 镜像版本v1.3 (已部署)
  • 镜像大小838MB (压缩后 ~186MB)
  • 基础镜像node:alpine
  • 构建时间2025-12-25 18:43
  • 构建策略改进版方案B本地编译+Docker打包

构建成果

  • TypeScript编译成功0错误修复200+个错误)
  • Prisma Schema已同步RDS32个模型
  • 手动补全30+个关系字段
  • 镜像已推送到ACRv1.0 + latest

技术架构

  • Node.js版本22.x
  • Prisma版本6.17.0
  • ORMPrisma支持多Schema
  • Web框架Fastify
  • 队列系统pg-bossPostgres-Only架构
  • 缓存系统PostgreSQL替代Redis

构建产物

  • DockerfileAIclinicalresearch/backend/Dockerfile
  • .dockerignoreAIclinicalresearch/backend/.dockerignore
  • Prisma SchemaAIclinicalresearch/backend/prisma/schema.prisma

SAE配置建议

  • CPU/内存1核 / 2GB测试环境
  • 实例数1
  • 端口3001
  • 健康检查GET /health 返回200
  • 环境变量(关键配置):
    NODE_ENV=production
    PORT=3001
    DATABASE_URL=postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research?connection_limit=18&pool_timeout=10
    
    # Python微服务地址
    PYTHON_SERVICE_URL=http://172.17.173.66:8000
    
    # OSS配置
    OSS_ACCESS_KEY_ID=LTAI5tB2Dt3NdvBL3G7nYGv7
    OSS_ACCESS_KEY_SECRET=1iSN9k39RkApP93QjUhC1DcPIeMG4V
    OSS_BUCKET=ai-clinical-research
    OSS_ENDPOINT=oss-cn-beijing-internal.aliyuncs.com
    
    # JWT密钥2025-12-25已生成强密钥
    JWT_SECRET=8a3f9e7c2d1b5a4e6f8c9d0a3b5e7f1c2a4b6c8d0e2f4a6b8c0d2e4f6a8b0c2d4
    JWT_EXPIRES_IN=7d
    
    # LLM API Keys
    DEEPSEEK_API_KEY=sk-7f8cc37a79fa4799860b38fc7ba2e150
    DASHSCOPE_API_KEY=sk-75b4ff29a14a49e79667a331034f3298
    
    # 队列和缓存Postgres-Only
    QUEUE_TYPE=pgboss
    CACHE_TYPE=postgres
    

操作文档

部署状态

  • Prisma反向同步完成32个模型
  • TypeScript编译成功修复200+错误)
  • Docker镜像构建成功
  • 镜像已推送至ACRv1.3
  • 已成功部署到SAE2025-12-25 18:55
  • 服务运行正常(内网地址:http://172.17.173.71:3001

部署历程2025-12-25

  1. 🔧 修复1Alpine Linux bash路径问题使用/bin/sh
  2. 🔧 修复2config目录缺失补充COPY config到Dockerfile
  3. 🔧 修复3pino-pretty生产环境问题改为条件启用
  4. 🔧 修复4healthCheck ES Module兼容性require → import
  5. 最终成功部署并通过健康检查

关键突破

  1. 解决了Prisma db pull 后缺少关系字段的问题手动补全30+个)
  2. 修复了TypeScript类型错误JSON、Buffer、pg-boss等
  3. 优化了Docker构建策略本地编译避免网络超时
  4. 实现了零编译错误200+ → 0

3.4 Python微服务

镜像信息

  • 仓库名称python-extraction
  • 镜像版本v1.0
  • 镜像大小1.12GB
  • 基础镜像python:3-slim
  • 构建时间2025-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

依赖优化

# 精简版依赖requirements-prod.txt
- 移除nougat-ocr (1.5GB)
- 移除albumentations (Nougat依赖)
- 保留pandas、numpy、polarsDC工具必需
- 保留PyMuPDF、pdfplumberPDF提取

健康检查

  • 端点GET /api/health
  • 响应示例
    {
      "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
  • 环境变量
    LOG_LEVEL=INFO
    TEMP_DIR=/tmp/extraction_service
    
    ⚠️ 生产环境建议根据实际负载调整实例数

构建产物

  • DockerfileAIclinicalresearch/extraction_service/Dockerfile
  • 依赖文件AIclinicalresearch/extraction_service/requirements-prod.txt
  • .dockerignoreAIclinicalresearch/extraction_service/.dockerignore

关键技术方案

  • 使用阿里云Debian镜像源解决apt-get网络问题
  • 多阶段构建(优化镜像大小)
  • 运行时依赖安装libgl1、libglib2.0

操作文档

部署状态

  • Docker镜像构建成功本地测试通过
  • 镜像已推送至ACR
  • 已部署到SAE轻量版应用
  • 应用运行正常2个worker进程

内网访问地址

http://172.17.173.66:8000

部署时间2025-12-24 健康检查 通过


四、快速命令参考

4.1 Docker镜像管理

登录ACR

# 使用公网地址登录
docker login --username=gofeng117@163.com \
  --password=fengzhibo117 \
  crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com

拉取镜像

# 前端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

本地测试

# 前端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微服务

构建新版本

# 前端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

# 启动本地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;"

数据库备份

# 导出完整数据库
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_20251224_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应用连接字符串

# .env 文件配置
DATABASE_URL="postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432/ai_clinical_research"

# 注意:@ 符号需要URL编码为 %40

4.3 SAE常用操作

通过阿里云CLI部署(可选):

# 安装阿里云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微服务文档提取+数据清洗)- 已部署到SAE2025-12-24
    • Node.js后端API服务器- 已成功部署到SAE2025-12-25
  5. 前端服务Nginx静态资源托管 - 已成功部署到SAE2025-12-25
  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%、健康检查失败

日志查看

# 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镜像构建 已完成2025-12-24
  • Node.js后端Prisma反向同步 已完成32个模型
  • Node.js后端TypeScript编译修复 已完成修复200+错误)
  • Node.js后端镜像推送到ACR 已完成v1.3
  • Node.js后端部署到SAE 已完成2025-12-25
  • Node.js后端配置环境变量Python服务地址 已完成
  • Node.js后端修复4个部署问题bash/config/pino/require 已完成

中优先级 🟡

  • 前端Nginx部署到SAE并配置域名 已完成2025-12-25
  • 内网通信配置前端→后端→Python微服务的内网调用
  • SSL证书申请并配置HTTPS
  • 监控告警配置SAE健康检查和告警规则

低优先级 🟢

  • Dify AI:评估部署方案
  • 负载测试:压力测试各服务性能
  • 文档完善:补充故障排查手册
  • CI/CD:配置自动化部署流程

📚 七、相关文档索引

部署指南

服务部署手册

技术架构文档

分析报告


🔄 八、更新日志

2025-12-25完整部署成功日🎉

上午Node.js后端部署

  • Node.js后端成功部署到SAEv1.3
  • 修复Alpine Linux bash路径问题/bin/bash → /bin/sh
  • 修复config目录缺失问题Dockerfile补充COPY config
  • 修复pino-pretty生产环境问题条件启用
  • 修复healthCheck ES Module兼容性require → import
  • 生成强JWT密钥64位十六进制
  • 创建3个问题修复文档13/14/15号文档
  • 更新SAE部署操作手册12号文档
  • 更新部署配置清单11号文档

中午前端Nginx部署

  • 前端Nginx成功部署到SAEv1.0
  • 前端服务运行正常(内网地址:http://172.17.173.72:80
  • 前端到后端代理验证通过
  • 完整链路测试通过(前端→后端→数据库)

下午环境变量修复与CLB配置

  • 发现工具C的7大功能报错connect ECONNREFUSED 127.0.0.1:8000
  • 排查并修复关键问题:环境变量名错误
    • 代码使用:EXTRACTION_SERVICE_URL
    • 错误配置:PYTHON_SERVICE_URL
    • 正确配置:EXTRACTION_SERVICE_URL=http://172.17.173.66:8000
  • Node.js后端重新部署IP地址更新为http://172.17.173.73:3001
  • 更新前端Nginx环境变量BACKEND_SERVICE_HOST=172.17.173.73
  • 配置CLB负载均衡器获得公网访问地址http://8.140.53.236/
  • 工具C的7大功能全部测试通过数值映射、缺失值处理等
  • 文献筛查模块测试通过
  • 完整系统部署成功验证 🎉

晚上:文档完善

  • 创建 17-完整部署实战手册-2025版.md1800行基于实战经验
  • 创建 18-部署文档使用指南.md(快速导航文档)
  • 更新 00-部署进度总览.md(添加新文档索引)
  • 总结部署经验与最佳实践

2025-12-24

  • PostgreSQL数据库部署完成
  • 前端Nginx Docker镜像构建并推送至ACR
  • Python微服务Docker镜像构建并推送至ACR
  • 创建部署进度总览文档
  • 创建Python微服务SAE部署操作手册轻量版SAE配置
  • Python微服务成功部署到SAE内网地址172.17.173.66:8000
  • 解决ACR镜像拉取权限问题配置镜像仓库认证
  • Node.js后端Prisma反向同步完成32个模型手动补全30+关系字段)
  • Node.js后端TypeScript编译修复完成修复200+错误→0错误
  • Node.js后端Docker镜像构建成功838MB改进版方案B
  • Node.js后端镜像推送至ACRv1.0
  • 创建Node.js后端Docker镜像构建手册

📞 九、联系与支持

技术支持

紧急联系

  • 数据库问题:先检查 [08-PostgreSQL数据库部署操作手册.md]
  • SAE部署问题先检查 [01-快速部署SOP-零基础版.md]
  • 镜像构建问题:查看本文档"快速命令参考"章节

提示:本文档会随着部署进度持续更新,请定期查看最新版本!
最后更新2025-12-24