feat: add HA infrastructure, CI/CD pipeline, and Redis/Celery hardening

- Add docker-compose.ha.yml for PostgreSQL/Redis HA setup with Patroni and Sentinel
- Add docker-compose.prod.yml for production deployment
- Add GitHub Actions CI/CD workflow (build.yml)
- Add install.cmd for Windows one-click setup
- Harden Redis connection with retry logic and health checks
- Add Celery HA config with Redis Sentinel support
- Add HA operations runbook
- Update README with deployment and architecture docs
- Move landing page spec to .claude/specs/design/
- Update memory intelligence PRD
This commit is contained in:
zhangtuo
2026-02-28 14:57:02 +08:00
parent 9cdff18336
commit c82d408ea1
14 changed files with 1301 additions and 24 deletions

118
README.md
View File

@@ -51,6 +51,124 @@ npm run dev
- 后端 APIhttp://localhost:8000
- Swagger 文档http://localhost:8000/docs
## Docker Compose 使用说明
本项目包含 3 个 compose 文件:
- `docker-compose.yml`:开发基线,包含本地构建(`build`)配置,适合日常开发调试。
- `docker-compose.prod.yml`:生产基线,使用预构建镜像(不本地构建),适合部署环境。
- `docker-compose.ha.yml`HA 覆盖层,提供 PostgreSQL 主从、Redis 主从 + Sentinel、备份任务。
### 使用选择
- 本地开发:使用 `docker-compose.yml`
- 生产部署:使用 `docker-compose.prod.yml`
- 需要高可用:在上面任一基线上叠加 `docker-compose.ha.yml`
> 注意:`docker-compose.ha.yml` 是覆盖文件,不能单独使用。
### 常用命令
#### 开发模式(单机)
```bash
docker compose -f docker-compose.yml up -d
```
#### 开发 + HA主从/哨兵演练)
```bash
docker compose -f docker-compose.yml -f docker-compose.ha.yml up -d
```
#### 生产模式(预构建镜像)
```bash
docker compose -f docker-compose.prod.yml up -d
```
#### 生产 + HA
```bash
docker compose -f docker-compose.prod.yml -f docker-compose.ha.yml up -d
```
#### 查看状态 / 日志
```bash
docker compose -f docker-compose.yml -f docker-compose.ha.yml ps
docker compose -f docker-compose.yml -f docker-compose.ha.yml logs -f backend
```
#### 停止并清理(含卷)
```bash
docker compose -f docker-compose.yml -f docker-compose.ha.yml down -v
```
### `docker-compose.prod.yml` 镜像标签
`docker-compose.prod.yml` 使用以下镜像格式:
- `${REGISTRY:-}dreamweaver-backend:${TAG:-latest}`
- `${REGISTRY:-}dreamweaver-frontend:${TAG:-latest}`
- `${REGISTRY:-}dreamweaver-admin-frontend:${TAG:-latest}`
Linux 部署示例(推荐):
```bash
export REGISTRY=my-registry.example.com/
export TAG=2026.02.12
docker compose -f docker-compose.prod.yml up -d
```
Windows PowerShell 示例:
```powershell
$env:REGISTRY="my-registry.example.com/"
$env:TAG="2026.02.12"
docker compose -f docker-compose.prod.yml up -d
```
### Linux 服务器部署流程(推荐)
以下流程适用于 Ubuntu/CentOS 等 Linux 服务器:
#### 1) 准备配置
```bash
cp backend/.env.example backend/.env
# 编辑 backend/.env至少配置 SECRET_KEY、OAuth/API Key 等
```
#### 2) 启动(非 HA
```bash
export REGISTRY=my-registry.example.com/
export TAG=2026.02.12
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
```
#### 3) 启动HA
```bash
export REGISTRY=my-registry.example.com/
export TAG=2026.02.12
docker compose -f docker-compose.prod.yml -f docker-compose.ha.yml pull
docker compose -f docker-compose.prod.yml -f docker-compose.ha.yml up -d
```
#### 4) 运行状态检查
```bash
docker compose -f docker-compose.prod.yml ps
docker compose -f docker-compose.prod.yml logs -f backend
```
HA 场景使用:
```bash
docker compose -f docker-compose.prod.yml -f docker-compose.ha.yml ps
docker compose -f docker-compose.prod.yml -f docker-compose.ha.yml logs -f backend
```
#### 5) 版本升级
```bash
export TAG=2026.02.13
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
```
HA 场景同理,在命令中额外叠加 `-f docker-compose.ha.yml`
#### 6) 版本回滚
```bash
export TAG=2026.02.12
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d
```
## 供应商路由与管理后台
- 路由按配置顺序尝试:`TEXT_PROVIDERS`(默认 `text_primary`)、`IMAGE_PROVIDERS`(默认 `image_primary`)、`TTS_PROVIDERS`(默认 `tts_primary`)。失败会自动切换下一个。
- 管理后台(默认关闭):`ENABLE_ADMIN_CONSOLE=true` 时启用,接口在 `/admin/providers`CRUD`/admin/providers/reload`。鉴权使用 Basic Auth账号密码由 `ADMIN_USERNAME`/`ADMIN_PASSWORD` 设置(请覆盖默认值)。