1. 更新所有服务Dockerfile,切换到eclipse-temurin:17-jre-alpine镜像并调整服务端口 2. 配置前端项目基础路径与nginx代理 3. 新增数据库初始化编码设置与测试依赖 4. 添加部分服务的Servlet编码配置与JWT/LLM密钥配置 5. 完善话术实体类校验注解与Mapper接口 6. 新增密码生成工具类与部分测试文件配置
4.5 KiB
4.5 KiB
第九联盟AI坐席辅助系统 - Docker 部署指南
前置条件
- Docker Engine >= 20.10
- Docker Compose >= 2.0
- 服务器内存 >= 4GB(推荐 8GB)
- 磁盘空间 >= 10GB
快速开始
1. 克隆代码
git clone <your-repo-url>
cd agent_9art
2. 配置环境变量
# 复制环境变量模板
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. 构建并启动
# 一键构建并启动全部服务
docker-compose up -d --build
# 首次启动需要等待 MySQL 初始化(约 30-60 秒)
docker-compose logs -f mysql
4. 验证状态
# 查看所有容器状态
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 文件:
# 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
常用命令
# 查看日志
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。
生产环境建议
- 修改默认密码:
.env中的MYSQL_ROOT_PASSWORD和RABBITMQ_DEFAULT_PASS不要使用默认值 - 使用 HTTPS:Nginx 配置 SSL 证书,将 80 端口重定向到 443
- 限制端口暴露:生产环境只暴露 Nginx 80/443 端口,其他后端服务端口不映射到宿主机
- 日志管理:配置 Docker 日志轮转,避免磁盘占满
- 监控告警:集成 Prometheus + Grafana 监控各服务健康状态