Files
smartmate/docs/容器化部署说明.md
Losita 25a608eaeb Version: 0.9.82.dev.260507
后端:
1. 登录注册补齐极验行为验证与跨域入口:gateway 新增 `/user/captcha/register`,登录/注册先做 GeeTest 初始化与二次校验,再进入 user/auth RPC;补充验证码失败/初始化失败/服务不可用响应码,并新增可配置 CORS middleware 适配分域部署。
2. 容器部署配置入口收口:`bootstrap.LoadConfig` 支持 `SMARTFLOW_CONFIG_FILE` 与环境变量覆盖,`config.example.yaml` / `config.docker.yaml` 补齐 geetest 与容器内服务地址,网关新增配置列表解析,便于 compose 场景直接挂载配置启动。
3. LLM outbox 与助手时间线稳定性修正:`cmd/llm` 显式绑定 llm 自身 topic/group,避免误入 agent consumer group;agent timeline 在 Redis 热缓存未落 MySQL 时改用 `seq` 兜底临时 id,避免前端历史回放撞 key。

前端:
4. 认证页接入极验并补齐提交前校验:新增 GeeTest 脚本加载与实例封装,登录/注册面板支持 challenge 初始化、切换面板重挂载、失败提示与提交前校验,认证 API/types 同步透传 geetest 三元组。
5. 前端部署基址与网关对接收口:Axios `baseURL`、Vue Router `history base` 与 Vite `base/dev proxy` 改为读取环境变量,新增 `frontend/.env.example`,支持子路径部署、容器内反向代理和本地联调共存。
6. 助手与工作台展示细节修正:AssistantPanel 历史重建优先使用真实 timeline id、缺失时退回 `seq` 保证消息主键唯一;首页主面板改为纵向可滚动并补底部留白,避免内容截断。

仓库:
7. 整站容器化交付链路补齐并重写说明文档:新增后端/前端 Dockerfile、`.dockerignore`、前端 Nginx 代理、`docker-compose.full.yml`、`.env.full.example` 与镜像打包/导入脚本,README 改写数据库/路由/部署章节,并新增 `docs/容器化部署说明.md` 说明离线镜像分发方案。
2026-05-07 00:58:27 +08:00

134 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SmartFlow 容器化部署说明
## 1. 方案定位
这套方案把“开发启动”和“服务器部署”拆开处理。
1. 本地开发继续使用 `backend/scripts` 下的 PowerShell 脚本,适合频繁改代码与频繁重启。
2. 服务器部署使用 [`docker-compose.full.yml`](/D:/SmartFlow-Agent/docker-compose.full.yml) 管理“依赖 + 后端 + 前端”全栈容器。
3. 离线或半离线环境通过 [`deploy/docker-pack.ps1`](/D:/SmartFlow-Agent/deploy/docker-pack.ps1) 在本地打包镜像,再用 [`deploy/docker-load.sh`](/D:/SmartFlow-Agent/deploy/docker-load.sh) 在 Linux 服务器导入。
## 2. 为什么国内弱网更适合这个方案
如果服务器不稳定访问国外镜像源,真正要调整的不是“要不要继续用 Docker Compose”而是“镜像分发方式”。
1. Compose 继续负责启动、重启、网络、卷和服务依赖。
2. 镜像构建与拉取放到本地或一台网络更好的机器上完成。
3. 服务器只做 `docker load``docker compose up -d`,避免上线时卡在拉镜像。
结论就是弱网环境会让“脚本直起进程”更难维护但会让“Compose + 离线镜像包”更有优势。
## 3. 关键文件
1. 后端共享镜像定义:[`backend/Dockerfile`](/D:/SmartFlow-Agent/backend/Dockerfile)
2. 前端镜像定义:[`frontend/Dockerfile`](/D:/SmartFlow-Agent/frontend/Dockerfile)
3. 前端反向代理配置:[`frontend/nginx.conf`](/D:/SmartFlow-Agent/frontend/nginx.conf)
4. 容器专用后端配置模板:[`backend/config.docker.yaml`](/D:/SmartFlow-Agent/backend/config.docker.yaml)
5. 全栈 Compose[`docker-compose.full.yml`](/D:/SmartFlow-Agent/docker-compose.full.yml)
6. Compose 环境变量示例:[.env.full.example](/D:/SmartFlow-Agent/.env.full.example)
## 4. 推荐流程
### 4.1 本地构建并导出镜像
在 Windows 开发机执行:
```powershell
cd D:\SmartFlow-Agent
.\deploy\docker-pack.ps1 -AppTag 20260506 -IncludeInfra
```
执行后会得到:
1. `.docker-bundles/smartflow-app-20260506.tar`
2. `.docker-bundles/smartflow-infra-20260506.tar`
### 4.2 传到 Linux 服务器并导入
首次使用前建议先给脚本执行权限:
```bash
chmod +x ./deploy/docker-load.sh
```
然后执行:
```bash
cd /data/smartflow
./deploy/docker-load.sh .docker-bundles
```
### 4.3 准备配置并启动
1. 复制 [.env.full.example](/D:/SmartFlow-Agent/.env.full.example) 为根目录 `.env`
2. 按实际情况修改 [`backend/config.docker.yaml`](/D:/SmartFlow-Agent/backend/config.docker.yaml) 中的密钥、模型配置与业务参数。
3. 启动全栈服务:
```bash
docker compose -f docker-compose.full.yml up -d
```
如需 Attu
```bash
docker compose -f docker-compose.full.yml --profile ops up -d
```
## 5. 镜像源困难时的处理方式
### 5.1 最稳妥:完全离线导入
适合服务器几乎拉不到外网镜像的情况。
1. 本地 `docker build` / `docker pull`
2. 本地 `docker save`
3. 服务器 `docker load`
4. 服务器 `docker compose up -d`
这是当前最推荐的落地方式。
### 5.2 次优方案:改成国内可访问的镜像地址
如果您有私有仓库或云厂商镜像加速源,可以在 `.env` 里修改这些变量:
1. `SMARTFLOW_MYSQL_IMAGE`
2. `SMARTFLOW_REDIS_IMAGE`
3. `SMARTFLOW_KAFKA_IMAGE`
4. `SMARTFLOW_ETCD_IMAGE`
5. `SMARTFLOW_MINIO_IMAGE`
6. `SMARTFLOW_MILVUS_IMAGE`
7. `SMARTFLOW_ATTU_IMAGE`
这样无需改 Compose 文件本身。
## 6. 选型结论
把“国内服务器拉镜像困难”考虑进去之后,结论会更明确。
1. 开发启动继续保留本地脚本方案。
2. 生产与测试部署优先选 `Docker Compose`,不要回退到 `main.go` 或手写启动脚本。
3. 镜像分发优先选“本地打包 + 服务器导入”,而不是让服务器现场构建或现场拉国外镜像。