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 (团队协作)

  1. 登录 Cloudflare Zero Trust
  2. 进入 Networks > Tunnels
  3. 点击 Create a tunnel
  4. 名称:mbe-dev
  5. 配置 Public Hostname:
    • Subdomain: mbe-dev
    • Domain: hi-maker.com
    • Service: http://mbe-api-dev:8000
  6. 复制 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