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
905 lines
32 KiB
Markdown
905 lines
32 KiB
Markdown
# 🚀 AI临床研究平台 - 部署进度总览
|
||
|
||
> **文档用途**:统一展示项目部署状态、资源信息、操作手册索引
|
||
> **更新时间**:2025-12-24 18:55
|
||
> **维护人员**:开发团队
|
||
|
||
---
|
||
|
||
## 📖 文档导航指南
|
||
|
||
### 🎯 下次部署应该看哪个文档?
|
||
|
||
#### 🔥 完整部署(强烈推荐)
|
||
|
||
**⭐⭐⭐⭐⭐ 实战版部署手册**(2025-12-25新增):
|
||
- [17-完整部署实战手册-2025版.md](./17-完整部署实战手册-2025版.md) - **基于实际部署经历编写,包含所有坑点和解决方案!**
|
||
- ✅ 完整的部署流程(3.5小时)
|
||
- ✅ 所有遇到的4个问题及解决方案
|
||
- ✅ 关键经验总结
|
||
- ✅ 可直接复制的配置和命令
|
||
- ✅ 适合快速部署和重新部署
|
||
|
||
**⭐⭐⭐ 零基础版部署手册**:
|
||
- [01-快速部署SOP-零基础版.md](./01-快速部署SOP-零基础版.md) - 完整的部署流程(学习用)
|
||
|
||
**如何选择**:
|
||
- 🎯 **要快速部署** → 看 `17-完整部署实战手册-2025版.md`(推荐)
|
||
- 📚 **要学习原理** → 看 `01-快速部署SOP-零基础版.md`
|
||
- 🔍 **查询资源信息** → 看本文档(00-部署进度总览.md)
|
||
|
||
---
|
||
|
||
#### Node.js 后端部署
|
||
|
||
**主文档(必读)**:
|
||
- ⭐⭐⭐ [12-Node.js后端-SAE部署操作手册.md](./12-Node.js后端-SAE部署操作手册.md) - **最新、最完整的操作手册**
|
||
|
||
**配置参考(必备)**:
|
||
- ⭐⭐ [11-Node.js后端-SAE部署配置清单.md](./11-Node.js后端-SAE部署配置清单.md) - 环境变量和配置参数
|
||
|
||
**快速了解(推荐)**:
|
||
- ⭐ [15-Node.js后端-部署成功总结.md](./15-Node.js后端-部署成功总结.md) - 部署历程和问题修复记录
|
||
|
||
**问题修复参考**:
|
||
- [13-Node.js后端-镜像修复记录.md](./13-Node.js后端-镜像修复记录.md) - config目录问题
|
||
- [14-Node.js后端-pino-pretty问题修复.md](./14-Node.js后端-pino-pretty问题修复.md) - 日志配置问题
|
||
|
||
#### Python 微服务部署
|
||
- ⭐⭐⭐ [09-Python微服务-SAE部署操作手册.md](./09-Python微服务-SAE部署操作手册.md)
|
||
- [04-Python微服务-SAE容器部署指南.md](./04-Python微服务-SAE容器部署指南.md)
|
||
|
||
#### 前端 Nginx 部署
|
||
- ⭐⭐⭐ [07-前端Nginx-SAE部署操作手册.md](./07-前端Nginx-SAE部署操作手册.md)
|
||
- [06-前端Nginx-SAE容器部署指南.md](./06-前端Nginx-SAE容器部署指南.md)
|
||
|
||
#### PostgreSQL 数据库
|
||
- ⭐⭐⭐ [08-PostgreSQL数据库部署操作手册.md](./08-PostgreSQL数据库部署操作手册.md)
|
||
|
||
---
|
||
|
||
## 📊 一、部署进度一览表
|
||
|
||
| 服务名称 | 部署状态 | 镜像版本 | 部署位置 | 完成时间 | 操作文档 |
|
||
|---------|---------|---------|---------|---------|---------|
|
||
| **PostgreSQL数据库** | ✅ 已完成 | PostgreSQL 15 | RDS | 2025-12-24 | [08-PostgreSQL数据库部署操作手册.md](./08-PostgreSQL数据库部署操作手册.md) |
|
||
| **前端Nginx服务** | ✅ 已完成 | v1.0 | SAE(运行中) | 2025-12-25 | [07-前端Nginx-SAE部署操作手册.md](./07-前端Nginx-SAE部署操作手册.md) |
|
||
| **Python微服务** | ✅ 已完成 | v1.0 | SAE(轻量版) | 2025-12-24 | [09-Python微服务-SAE部署操作手册.md](./09-Python微服务-SAE部署操作手册.md) |
|
||
| **Node.js后端** | ✅ 已完成 | v1.3 | SAE(运行中) | 2025-12-25 | [12-Node.js后端-SAE部署操作手册.md](./12-Node.js后端-SAE部署操作手册.md) |
|
||
| **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` |
|
||
| **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 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`
|
||
- **公网IP(EIP)**:`182.92.176.14`
|
||
- **SNAT表ID**:`stb-2zesszmzx1qpwf1cb2bry`
|
||
- **SNAT条目**:覆盖所有交换机,允许VPC内资源访问公网
|
||
|
||
---
|
||
|
||
### 2.3 RDS PostgreSQL数据库
|
||
|
||
**实例信息**:
|
||
- **实例ID**:`pgm-2zex1m2y3r23hdn5`
|
||
- **规格**:2核4GB(pg.n2.2c.1m)
|
||
- **存储空间**:100GB(SSD云盘)
|
||
- **PostgreSQL版本**:15.0
|
||
- **内网地址**:`pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com:5432`
|
||
- **外网地址**:`pgm-2zex1m2y3r23hdn5.pg.rds.aliyuncs.com`(⚠️ 已关闭)
|
||
- **最大连接数**:400
|
||
- **时区**:Asia/Shanghai
|
||
- **白名单**:172.17.0.0/16(VPC网段)
|
||
|
||
**数据库配置**:
|
||
- **数据库名**:`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应用
|
||
|
||
**命名空间**:
|
||
- **命名空间ID**:`cn-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(北京)
|
||
- **存储类型**:标准存储
|
||
- **访问控制**:私有
|
||
- **存储冗余类型**:同城冗余存储
|
||
- **内网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 ✅ 已提交Git(Nginx配置)
|
||
└── docker-entrypoint.sh ✅ 已提交Git(启动脚本)
|
||
|
||
镜像存储位置:
|
||
公网:crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v1.0
|
||
VPC:crpi-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
|
||
VPC:crpi-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 ✅ 已同步RDS(32个模型+30+关系字段)
|
||
└── tsconfig.json ✅ 已优化(排除测试文件)
|
||
|
||
镜像存储位置:
|
||
公网:crpi-cd5ij4pjt65mweeo.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v1.0
|
||
VPC:crpi-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完整、数据一致、关系正确
|
||
|
||
**关键配置**:
|
||
```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`
|
||
- **构建时间**:2025-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 Node.js后端服务
|
||
|
||
**镜像信息**:
|
||
- **仓库名称**:`backend-service`
|
||
- **镜像版本**:`v1.3` ✅(已部署)
|
||
- **镜像大小**:838MB (压缩后 ~186MB)
|
||
- **基础镜像**:`node:alpine`
|
||
- **构建时间**:2025-12-25 18:43
|
||
- **构建策略**:改进版方案B(本地编译+Docker打包)
|
||
|
||
**构建成果**:
|
||
- ✅ TypeScript编译成功(0错误,修复200+个错误)
|
||
- ✅ Prisma Schema已同步RDS(32个模型)
|
||
- ✅ 手动补全30+个关系字段
|
||
- ✅ 镜像已推送到ACR(v1.0 + latest)
|
||
|
||
**技术架构**:
|
||
- **Node.js版本**:22.x
|
||
- **Prisma版本**:6.17.0
|
||
- **ORM**:Prisma(支持多Schema)
|
||
- **Web框架**:Fastify
|
||
- **队列系统**:pg-boss(Postgres-Only架构)
|
||
- **缓存系统**:PostgreSQL(替代Redis)
|
||
|
||
**构建产物**:
|
||
- **Dockerfile**:`AIclinicalresearch/backend/Dockerfile`
|
||
- **.dockerignore**:`AIclinicalresearch/backend/.dockerignore`
|
||
- **Prisma Schema**:`AIclinicalresearch/backend/prisma/schema.prisma`
|
||
|
||
**SAE配置建议**:
|
||
- **CPU/内存**:1核 / 2GB(测试环境)
|
||
- **实例数**:1
|
||
- **端口**:3001
|
||
- **健康检查**:`GET /health` 返回200
|
||
- **环境变量**(关键配置):
|
||
```bash
|
||
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
|
||
```
|
||
|
||
**操作文档**:
|
||
- [10-Node.js后端-Docker镜像构建手册.md](./10-Node.js后端-Docker镜像构建手册.md) - 镜像构建详细步骤
|
||
- [05-Node.js后端-SAE容器部署指南.md](./05-Node.js后端-SAE容器部署指南.md) - SAE部署技术指南
|
||
|
||
**部署状态**:
|
||
- ✅ Prisma反向同步完成(32个模型)
|
||
- ✅ TypeScript编译成功(修复200+错误)
|
||
- ✅ Docker镜像构建成功
|
||
- ✅ 镜像已推送至ACR(v1.3)
|
||
- ✅ 已成功部署到SAE(2025-12-25 18:55)
|
||
- ✅ 服务运行正常(内网地址:http://172.17.173.71:3001)
|
||
|
||
**部署历程(2025-12-25)**:
|
||
1. 🔧 修复1:Alpine Linux bash路径问题(使用/bin/sh)
|
||
2. 🔧 修复2:config目录缺失(补充COPY config到Dockerfile)
|
||
3. 🔧 修复3:pino-pretty生产环境问题(改为条件启用)
|
||
4. 🔧 修复4:healthCheck 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)
|
||
|
||
**依赖优化**:
|
||
```txt
|
||
# 精简版依赖(requirements-prod.txt)
|
||
- 移除:nougat-ocr (1.5GB)
|
||
- 移除:albumentations (Nougat依赖)
|
||
- 保留:pandas、numpy、polars(DC工具必需)
|
||
- 保留:PyMuPDF、pdfplumber(PDF提取)
|
||
```
|
||
|
||
**健康检查**:
|
||
- **端点**:`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) - 技术架构详解
|
||
- [09-Python微服务-SAE部署操作手册.md](./09-Python微服务-SAE部署操作手册.md) - SAE部署操作步骤
|
||
|
||
**部署状态**:
|
||
- ✅ Docker镜像构建成功(本地测试通过)
|
||
- ✅ 镜像已推送至ACR
|
||
- ✅ 已部署到SAE(轻量版应用)
|
||
- ✅ 应用运行正常(2个worker进程)
|
||
|
||
**内网访问地址**:
|
||
```
|
||
http://172.17.173.66:8000
|
||
```
|
||
|
||
**部署时间**:2025-12-24
|
||
**健康检查**:✅ 通过
|
||
|
||
---
|
||
|
||
## ⚡ 四、快速命令参考
|
||
|
||
### 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_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应用连接字符串**:
|
||
```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微服务(文档提取+数据清洗)- 已部署到SAE(2025-12-24)
|
||
- ✅ Node.js后端(API服务器)- 已成功部署到SAE(2025-12-25)
|
||
5. ✅ **前端服务**:Nginx静态资源托管 - 已成功部署到SAE(2025-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%、健康检查失败
|
||
|
||
**日志查看**:
|
||
```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
|
||
|
||
---
|
||
|
||
## 📝 六、待办事项清单
|
||
|
||
### 高优先级 🔴
|
||
- [x] **Python微服务**:部署到SAE并验证 ✅ 已完成
|
||
- [x] **Python微服务**:创建SAE部署操作手册 ✅ 已完成
|
||
- [x] **Node.js后端**:Docker镜像构建 ✅ 已完成(2025-12-24)
|
||
- [x] **Node.js后端**:Prisma反向同步 ✅ 已完成(32个模型)
|
||
- [x] **Node.js后端**:TypeScript编译修复 ✅ 已完成(修复200+错误)
|
||
- [x] **Node.js后端**:镜像推送到ACR ✅ 已完成(v1.3)
|
||
- [x] **Node.js后端**:部署到SAE ✅ 已完成(2025-12-25)
|
||
- [x] **Node.js后端**:配置环境变量(Python服务地址) ✅ 已完成
|
||
- [x] **Node.js后端**:修复4个部署问题(bash/config/pino/require) ✅ 已完成
|
||
|
||
### 中优先级 🟡
|
||
- [x] **前端Nginx**:部署到SAE并配置域名 ✅ 已完成(2025-12-25)
|
||
- [ ] **内网通信**:配置前端→后端→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部署步骤
|
||
- [09-Python微服务-SAE部署操作手册.md](./09-Python微服务-SAE部署操作手册.md) - Python微服务部署步骤
|
||
- [10-Node.js后端-Docker镜像构建手册.md](./10-Node.js后端-Docker镜像构建手册.md) - Node.js后端Docker构建详解
|
||
|
||
### 技术架构文档
|
||
- [00-部署架构总览.md](./00-部署架构总览.md) - 架构设计与技术选型
|
||
- [04-Python微服务-SAE容器部署指南.md](./04-Python微服务-SAE容器部署指南.md) - Python服务技术详解
|
||
- [05-Node.js后端-SAE容器部署指南.md](./05-Node.js后端-SAE容器部署指南.md) - Node.js后端技术详解
|
||
- [06-前端Nginx-SAE容器部署指南.md](./06-前端Nginx-SAE容器部署指南.md) - 前端Nginx技术详解
|
||
|
||
### 分析报告
|
||
- [PostgreSQL部署策略-摸底报告.md](./PostgreSQL部署策略-摸底报告.md) - 数据库结构分析
|
||
|
||
---
|
||
|
||
## 🔄 八、更新日志
|
||
|
||
### 2025-12-25(完整部署成功日)🎉
|
||
|
||
#### 上午:Node.js后端部署
|
||
- ✅ Node.js后端成功部署到SAE(v1.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成功部署到SAE(v1.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版.md`(1800行,基于实战经验)
|
||
- ✅ 创建 `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后端镜像推送至ACR(v1.0)
|
||
- ✅ 创建Node.js后端Docker镜像构建手册
|
||
|
||
---
|
||
|
||
## 📞 九、联系与支持
|
||
|
||
**技术支持**:
|
||
- 开发团队内部文档
|
||
- 阿里云工单:https://workorder.console.aliyun.com/
|
||
|
||
**紧急联系**:
|
||
- 数据库问题:先检查 [08-PostgreSQL数据库部署操作手册.md]
|
||
- SAE部署问题:先检查 [01-快速部署SOP-零基础版.md]
|
||
- 镜像构建问题:查看本文档"快速命令参考"章节
|
||
|
||
---
|
||
|
||
> **提示**:本文档会随着部署进度持续更新,请定期查看最新版本!
|
||
> **最后更新**:2025-12-24
|
||
|