# 第九联盟AI坐席辅助系统 - Docker 部署指南 ## 前置条件 - Docker Engine >= 20.10 - Docker Compose >= 2.0 - 服务器内存 >= 4GB(推荐 8GB) - 磁盘空间 >= 10GB ## 快速开始 ### 1. 克隆代码 ```bash git clone 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 监控各服务健康状态