MBE 开发/生产环境分离指南
概述
MBE 支持同时运行开发版和生产版,互不干扰。
┌─────────────────────────────────────────────────────────────┐
│ 本地服务器 │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 开发环境 (dev) │ │ 生产环境 (prod) │ │
│ │ │ │ │ │
│ │ API: 8001 │ │ API: 8000 │ │
│ │ DB: 5433 │ │ DB: 内部 │ │
│ │ Redis: 6381 │ │ Redis: 内部 │ │
│ └────────┬────────┘ └────────┬────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Tunnel (可选) │ │ Tunnel │ │
│ └────────┬────────┘ └────────┬────────┘ │
└───────────┼────────────────────────┼────────────────────────┘
│ │
▼ ▼
┌───────────────┐ ┌───────────────┐
│ Cloudflare │ │ Cloudflare │
│ mbe-dev. │ │ mbe. │
│ hi-maker.com │ │ hi-maker.com │
└───────────────┘ └───────────────┘
环境对比
| 配置项 | 开发环境 | 生产环境 |
|---|---|---|
| 域名 | mbe-dev.hi-maker.com | mbe.hi-maker.com |
| API 端口 | 8001 | 8000 |
| 数据库端口 | 5433 (外部可访问) | 内部网络 |
| Redis 端口 | 6381 (外部可访问) | 内部网络 |
| 调试模式 | 开启 | 关闭 |
| 日志级别 | DEBUG | INFO |
| 数据库名 | mbe_dev | mbe_prod |
| 数据隔离 | 独立数据卷 | 独立数据卷 |
快速开始
方式一:使用管理脚本 (推荐)
# 查看帮助
.\mbe.ps1 help
# 启动开发环境
.\mbe.ps1 dev start
# 启动生产环境
.\mbe.ps1 prod start
# 查看状态
.\mbe.ps1 status
# 查看日志
.\mbe.ps1 dev logs -Follow
.\mbe.ps1 prod logs -Follow
# 停止服务
.\mbe.ps1 dev stop
.\mbe.ps1 prod stop
方式二:使用批处理文件
:: 开发环境
start-dev.bat :: 启动
start-dev.bat --tunnel :: 启动 + Cloudflare Tunnel
stop-dev.bat :: 停止
:: 生产环境
start-prod.bat :: 启动
start-prod.bat --mcp :: 启动 + MCP Client
stop-prod.bat :: 停止
方式三:直接使用 docker-compose
# 开发环境
docker-compose -f docker-compose.dev.yml up -d
docker-compose -f docker-compose.dev.yml --profile with-tunnel up -d # 含 Tunnel
# 生产环境
docker-compose -f docker-compose.prod.yml up -d
docker-compose -f docker-compose.prod.yml --profile with-mcp up -d # 含 MCP
Cloudflare 配置
Tunnel 配置
| Tunnel 名称 | 用途 | 域名 | 服务地址 |
|---|---|---|---|
| mises-engine | 生产环境 | mbe.hi-maker.com | http://mbe-api:8000 |
| mbe-dev | 开发环境 (团队协作) | mbe-dev.hi-maker.com | http://mbe-api-dev:8000 |
创建开发环境 Tunnel (团队协作)
- 登录 Cloudflare Zero Trust
- 进入 Networks > Tunnels
- 点击 Create a tunnel
- 名称:
mbe-dev - 配置 Public Hostname:
- Subdomain:
mbe-dev - Domain:
hi-maker.com - Service:
http://mbe-api-dev:8000
- Subdomain:
- 复制 Token 到
.env文件的CLOUDFLARE_TUNNEL_TOKEN_DEV
2. 配置 DNS
mbe.hi-maker.com → mbe-prod Tunnel
mbe-dev.hi-maker.com → mbe-dev Tunnel
3. 获取 Token 并配置 .env
# 在 Cloudflare 控制台获取 Token
# Zero Trust > Networks > Tunnels > 选择 Tunnel > Configure > Token
# 添加到 .env 文件
CLOUDFLARE_TUNNEL_TOKEN=生产环境Token
CLOUDFLARE_TUNNEL_TOKEN_DEV=开发环境Token
数据库访问
开发环境数据库
# 外部可直接访问
Host: localhost
Port: 5433
User: mbe
Password: mbe_dev_password
Database: mbe_dev
# 连接命令
psql -h localhost -p 5433 -U mbe -d mbe_dev
生产环境数据库
# 只能通过 Docker 网络访问
docker exec -it mbe-postgres psql -U mbe -d mbe
同时运行两个环境
开发和生产环境使用独立的:
- Docker 网络
- 数据卷
- 端口
可以同时运行,互不影响:
# 同时启动
.\mbe.ps1 dev start
.\mbe.ps1 prod start
# 查看状态
.\mbe.ps1 status
开发工作流
1. 在开发环境进行代码修改和测试
.\mbe.ps1 dev start
http://localhost:8001
2. 功能验证通过后,重启生产环境
.\mbe.ps1 prod restart
3. 如需远程测试开发版
.\mbe.ps1 dev start -Tunnel
https://mbe-dev.hi-maker.com
数据迁移
从开发环境迁移到生产环境
# 1. 导出开发数据库
docker exec mbe-postgres-dev pg_dump -U mbe mbe_dev > dev_backup.sql
# 2. 导入到生产数据库
docker exec -i mbe-postgres psql -U mbe -d mbe < dev_backup.sql
知识库同步
# 开发 → 生产
docker cp mbe-api-dev:/app/knowledge_bases ./kb_backup
docker cp ./kb_backup/. mbe-api:/app/knowledge_bases/
常见问题
Q: 端口冲突
# 检查端口占用
netstat -ano | findstr "8000\|8001\|5432\|5433"
# 停止所有 MBE 服务
.\mbe.ps1 dev stop
.\mbe.ps1 prod stop
Q: 数据库连接失败
# 检查数据库容器
docker logs mbe-postgres-dev # 开发环境
docker logs mbe-postgres # 生产环境
# 重建数据库
docker-compose -f docker-compose.dev.yml down -v
docker-compose -f docker-compose.dev.yml up -d
Q: Tunnel 连接失败
# 检查 Tunnel 状态
docker logs mbe-tunnel
docker logs mbe-tunnel-dev
# 确认 Token 配置正确
cat .env | findstr TUNNEL