跳到主要内容

Docker 部署

概述​

MGAgent 使用 Docker Compose 分层部署:

层级Compose 文件包含服务
基础设施docker-compose.infra.ymlMySQL、Milvus、etcd、MinIO、Attu
应用层docker-compose.prod.ymlChat 后端、Admin 后端、Chat 前端、Admin 前端

方式一:一键部署脚本(推荐)​

# 添加执行权限
chmod +x scripts/deploy.sh

# 首次部署前,复制配置模板
cp .env.production.example .env.production

# 启动所有服务(自动构建镜像 + 启动基础设施和应用层)
./scripts/deploy.sh up

# 其他操作
./scripts/deploy.sh down # 停止所有服务
./scripts/deploy.sh status # 查看状态
./scripts/deploy.sh logs # 查看日志
./scripts/deploy.sh restart # 重启

方式二:手动 Docker Compose​

第一步:启动基础设施​

# 启动 MySQL + Milvus + etcd + MinIO + Attu
docker compose -f docker-compose.infra.yml up -d

# 查看状态
docker compose -f docker-compose.infra.yml ps

基础设施服务列表:

服务镜像端口说明
MySQLmysql:8.03306:3306关系数据库
Milvusmilvusdb/milvus:v2.4.1219530:19530向量数据库
etcdquay.io/coreos/etcd:v3.5.52379 (内部)Milvus 元数据存储
MinIOminio/minio:latest9000:9000Milvus 对象存储
Attuzilliz/attu:v2.48003:3000Milvus 管理界面

第二步:启动应用层​

# 构建并启动所有应用服务
docker compose -f docker-compose.prod.yml up -d --build

# 查看服务状态
docker compose -f docker-compose.prod.yml ps

# 查看日志
docker compose -f docker-compose.prod.yml logs -f

应用层服务列表:

服务镜像端口说明
mgagent-backend自建8000:8000Chat 后端 API
mgagent-admin-backend自建8001:8001Admin 后端 API
mgagent-frontend自建3000:80Chat 前端 (Nginx)
mgagent-admin-frontend自建3001:80Admin 前端 (Nginx)

第三步:访问系统​

服务地址说明
Chat 前端http://localhost:3000智能对话
Admin 前端http://localhost:3001管理后台
Chat APIhttp://localhost:8000/docs后端 API 文档
Admin APIhttp://localhost:8001/docs管理 API 文档
Attuhttp://localhost:8003Milvus 管理界面

环境变量配置​

.env.production​

# MySQL 配置
MYSQL_HOST=mysql
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=your_root_password
MYSQL_DATABASE=mgagent
MYSQL_USER=mgagent
MYSQL_PASSWORD=your_password

# Milvus 配置
MILVUS_HOST=milvus
MILVUS_PORT=19530
MILVUS_COLLECTION=mgagent_knowledge

# MinIO 配置
MINIO_HOST=minio
MINIO_PORT=9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=mgagent-documents

# 服务端口
BACKEND_PORT=8000
ADMIN_BACKEND_PORT=8001
FRONTEND_PORT=3000
ADMIN_FRONTEND_PORT=3001
注意

在 Docker 网络中,服务间通信使用 服务名(mysql、milvus)而非 localhost。

数据持久化​

数据存储在 Docker 命名卷:

# 查看数据卷
docker volume ls

# 备份 MySQL
docker exec mgagent-mysql mysqldump -u mgagent -p mgagent > backup.sql

# 恢复 MySQL
docker exec -i mgagent-mysql mysql -u mgagent -p mgagent < backup.sql

常用命令速查​

# 启动基础设施
docker compose -f docker-compose.infra.yml up -d

# 启动应用层
docker compose -f docker-compose.prod.yml up -d --build

# 停止所有
docker compose -f docker-compose.infra.yml down
docker compose -f docker-compose.prod.yml down

# 重启
docker compose -f docker-compose.prod.yml restart

# 进入容器
docker exec -it mgagent-backend bash

# 查看资源使用
docker stats

# 清理所有数据卷(谨慎)
docker compose -f docker-compose.infra.yml down -v

网络配置​

所有服务通过 mgagent-network 外部网络互联。docker-compose.infra.yml 创建网络,docker-compose.prod.yml 加入网络。

相关文档​