本文引用的文件
本文件面向AI有声书生成平台的容器化部署,围绕以下目标展开:
本仓库包含后端服务、前端UniApp工程、部署文档与Nginx容器化代理样例。与容器化部署直接相关的关键位置如下:
部署文档 DEPLOY.md 提供了传统PM2部署与Docker方案的参考
graph TB
subgraph "宿主机"
Dev["开发者工作站"]
Prod["生产服务器"]
end
subgraph "容器编排"
NGINX["Nginx 反向代理<br/>端口映射 80:80"]
BACKEND["后端服务<br/>端口映射 3000:3000"]
REDIS["Redis 缓存"]
MYSQL["MySQL 数据库"]
end
Dev --> |"HTTP/HTTPS"| NGINX
NGINX --> |"反代 /api"| BACKEND
BACKEND --> |"读写"| REDIS
BACKEND --> |"读写"| MYSQL
Prod --> |"运维/监控"| NGINX
Prod --> |"运维/监控"| BACKEND
图示来源
章节来源
章节来源
下图展示容器化部署的典型拓扑:Nginx作为入口,后端服务提供API与业务逻辑,Redis与MySQL分别承担缓存与数据存储。
graph TB
Client["客户端浏览器/小程序"] --> Nginx["Nginx 反向代理"]
Nginx --> API["后端服务 /api/*"]
Nginx --> Static["静态资源 / (前端构建产物)"]
API --> Redis["Redis 缓存"]
API --> DB["MySQL 数据库"]
API --> Logger["日志服务"]
API --> Monitor["性能监控"]
图示来源
验证方式:curl http://bookapi.rrbrr.com/api/health
sequenceDiagram
participant C as "客户端"
participant N as "Nginx 容器"
participant B as "后端容器"
C->>N : "HTTP 请求 (bookapi.rrbrr.com)"
N->>N : "解析 conf.d/bookapi.conf"
N->>B : "proxy_pass http : //host.docker.internal : 3000"
B-->>N : "响应 (JSON/HTML)"
N-->>C : "返回响应"
图示来源
章节来源
中间件体系:
鉴权中间件:支持可选鉴权与Token校验
flowchart TD
Start(["请求进入"]) --> Security["安全中间件<br/>XSS/SQL注入/响应头"]
Security --> Cache["缓存中间件<br/>命中则返回"]
Cache --> Rate["限流中间件<br/>内存/Redis"]
Rate --> Perf["性能监控中间件<br/>统计指标"]
Perf --> Handler["业务处理器<br/>控制器/服务层"]
Handler --> Log["日志中间件<br/>HTTP日志"]
Log --> Resp(["返回响应"])
图示来源
章节来源
章节来源
卷挂载
后端可通过卷挂载上传目录或日志目录(依据实际部署)
graph LR
NGINX["Nginx 容器"] -- "80/tcp" --> Host["宿主机:80"]
BACKEND["后端容器"] -- "3000/tcp" --> Host
NGINX --> |"proxy_pass"| BACKEND
BACKEND --> |"Redis"| REDIS["Redis 容器"]
BACKEND --> |"MySQL"| MYSQL["MySQL 容器"]
图示来源
章节来源
章节来源
章节来源
本容器化方案以Nginx为入口,后端采用Koa中间件体系实现安全、限流、缓存与可观测性,结合Redis与MySQL满足高并发与可靠性需求。通过docker-compose实现快速编排与热更新,配合健康检查与日志采集,可支撑生产级部署与运维。