1. 更新所有服务Dockerfile,切换到eclipse-temurin:17-jre-alpine镜像并调整服务端口 2. 配置前端项目基础路径与nginx代理 3. 新增数据库初始化编码设置与测试依赖 4. 添加部分服务的Servlet编码配置与JWT/LLM密钥配置 5. 完善话术实体类校验注解与Mapper接口 6. 新增密码生成工具类与部分测试文件配置
158 lines
4.5 KiB
Markdown
158 lines
4.5 KiB
Markdown
# 第九联盟AI坐席辅助系统 - Docker 部署指南
|
||
|
||
## 前置条件
|
||
|
||
- Docker Engine >= 20.10
|
||
- Docker Compose >= 2.0
|
||
- 服务器内存 >= 4GB(推荐 8GB)
|
||
- 磁盘空间 >= 10GB
|
||
|
||
## 快速开始
|
||
|
||
### 1. 克隆代码
|
||
|
||
```bash
|
||
git clone <your-repo-url>
|
||
cd agent_9art
|
||
```
|
||
|
||
### 2. 配置环境变量
|
||
|
||
```bash
|
||
# 复制环境变量模板
|
||
cp .env .env.local
|
||
|
||
# 编辑 .env.local,填入真实配置
|
||
vim .env.local
|
||
```
|
||
|
||
**必须填写的配置项:**
|
||
|
||
| 变量 | 说明 | 获取方式 |
|
||
|------|------|---------|
|
||
| `WECOM_ARCHIVE_SECRET` | 企微会话存档 Secret | 企业微信管理后台 → 管理工具 → 会话内容存档 |
|
||
| `WECOM_ARCHIVE_RSA_KEY` | RSA 私钥(PKCS#1)| 自行生成,公钥配置到企微后台 |
|
||
| `WECOM_ARCHIVE_CALLBACK_TOKEN` | 回调验证 Token | 企微后台配置接收消息时设置 |
|
||
| `DASHSCOPE_API_KEY` | 通义千问 API Key | 阿里云 DashScope 控制台 |
|
||
|
||
**可选修改:**
|
||
- `MYSQL_ROOT_PASSWORD`:数据库 root 密码(默认 root)
|
||
- `RABBITMQ_DEFAULT_PASS`:RabbitMQ 密码(默认 admin)
|
||
|
||
### 3. 构建并启动
|
||
|
||
```bash
|
||
# 一键构建并启动全部服务
|
||
docker-compose up -d --build
|
||
|
||
# 首次启动需要等待 MySQL 初始化(约 30-60 秒)
|
||
docker-compose logs -f mysql
|
||
```
|
||
|
||
### 4. 验证状态
|
||
|
||
```bash
|
||
# 查看所有容器状态
|
||
docker-compose ps
|
||
|
||
# 预期输出:所有容器状态为 Up (healthy)
|
||
# NAME STATUS
|
||
# ai-assistant-mysql Up (healthy)
|
||
# ai-assistant-redis Up (healthy)
|
||
# ai-assistant-rabbitmq Up (healthy)
|
||
# ai-assistant-gateway Up
|
||
# ai-assistant-auth Up
|
||
# ...
|
||
```
|
||
|
||
### 5. 访问系统
|
||
|
||
| 地址 | 说明 |
|
||
|------|------|
|
||
| http://localhost/admin | 管理后台(Admin Dashboard) |
|
||
| http://localhost/sidebar | 侧边栏 H5(企微侧边栏) |
|
||
| http://localhost/api/v1/... | API 接口(通过 Gateway) |
|
||
| http://localhost:15672 | RabbitMQ 管理面板(guest/admin) |
|
||
|
||
## 企微 SDK Linux 部署(archive-service)
|
||
|
||
Windows 开发环境使用 `.dll`,Linux 服务器需要 `.so` 文件:
|
||
|
||
```bash
|
||
# 1. 从企微官网下载 Linux SDK,解压得到 libWeWorkFinanceSdk_Java.so
|
||
# 2. 放置到项目目录
|
||
mkdir -p ./sdk/linux
|
||
cp /path/to/libWeWorkFinanceSdk_Java.so ./sdk/linux/
|
||
|
||
# 3. 修改 docker-compose.yml,取消注释 archive-service 的 volumes 挂载
|
||
# volumes:
|
||
# - ./sdk/linux:/app/sdk
|
||
|
||
# 4. 重新启动 archive-service
|
||
docker-compose up -d --build archive-service
|
||
```
|
||
|
||
## 常用命令
|
||
|
||
```bash
|
||
# 查看日志
|
||
docker-compose logs -f # 全部服务
|
||
docker-compose logs -f gateway # 指定服务
|
||
|
||
# 重启服务
|
||
docker-compose restart gateway
|
||
|
||
# 停止全部服务
|
||
docker-compose down
|
||
|
||
# 停止并删除数据卷(慎用,会清空数据库)
|
||
docker-compose down -v
|
||
|
||
# 重新构建并启动单个服务
|
||
docker-compose up -d --build auth-service
|
||
|
||
# 进入容器调试
|
||
docker exec -it ai-assistant-mysql mysql -uroot -p
|
||
docker exec -it ai-assistant-redis redis-cli
|
||
```
|
||
|
||
## 服务端口对照
|
||
|
||
| 服务 | 容器端口 | 宿主机端口 | 说明 |
|
||
|------|---------|-----------|------|
|
||
| Nginx | 80 | 80 | 统一入口 |
|
||
| Gateway | 8080 | 8080 | API 网关 |
|
||
| Auth | 8081 | 8081 | 认证服务 |
|
||
| Archive | 8082 | 8082 | 会话存档 |
|
||
| Conversation | 8083 | 8083 | 对话管理 |
|
||
| Intent | 8084 | 8084 | 意图识别 |
|
||
| Recommendation | 8085 | 8085 | 话术推荐 |
|
||
| Generation | 8086 | 8086 | AI 生成 |
|
||
| KB-Admin | 8087 | 8087 | 管理后台 API |
|
||
| Analytics | 8088 | 8088 | 数据分析 |
|
||
| Admin | 80 | 5174 | 前端管理后台 |
|
||
| Sidebar | 80 | 5173 | 前端侧边栏 |
|
||
| MySQL | 3306 | 3306 | 数据库 |
|
||
| Redis | 6379 | 6379 | 缓存 |
|
||
| RabbitMQ | 5672 / 15672 | 5672 / 15672 | 消息队列 / 管理面板 |
|
||
|
||
## 数据持久化
|
||
|
||
Docker Compose 使用命名卷持久化数据:
|
||
|
||
| 卷名 | 说明 |
|
||
|------|------|
|
||
| `mysql_data` | MySQL 数据文件 |
|
||
| `redis_data` | Redis 持久化数据 |
|
||
| `rabbitmq_data` | RabbitMQ 消息队列数据 |
|
||
|
||
数据保存在 Docker 管理的卷中,执行 `docker-compose down` 不会删除数据。如需彻底清空,使用 `docker-compose down -v`。
|
||
|
||
## 生产环境建议
|
||
|
||
1. **修改默认密码**:`.env` 中的 `MYSQL_ROOT_PASSWORD` 和 `RABBITMQ_DEFAULT_PASS` 不要使用默认值
|
||
2. **使用 HTTPS**:Nginx 配置 SSL 证书,将 80 端口重定向到 443
|
||
3. **限制端口暴露**:生产环境只暴露 Nginx 80/443 端口,其他后端服务端口不映射到宿主机
|
||
4. **日志管理**:配置 Docker 日志轮转,避免磁盘占满
|
||
5. **监控告警**:集成 Prometheus + Grafana 监控各服务健康状态
|