Docker 启动开发版和生产版指南

更新日期: 2026-02-03
适用场景: 同时运行开发版和生产版服务


🚀 快速启动

方式一:使用一键启动脚本(推荐)

# 进入项目目录
cd D:\Mises\mises-behavior-engine

# 运行启动脚本
.\scripts\start_dev_and_prod.ps1

方式二:手动启动

1. 启动开发版

cd D:\Mises\mises-behavior-engine

# 启动开发版服务
docker-compose -f docker-compose.dev.yml up -d

# 如果需要启动 PWA 前端
docker-compose -f docker-compose.dev.yml --profile with-pwa up -d pwa-dev

2. 启动生产版

cd D:\Mises\mises-behavior-engine

# 启动生产版服务
docker-compose -f docker-compose.prod.yml up -d

# 如果需要启动 PWA 前端
docker-compose -f docker-compose.prod.yml --profile with-pwa up -d pwa

📊 服务端口分配

开发版服务

服务 容器名 本地端口 说明
API mbe-api-dev 8001 开发版 API
PostgreSQL mbe-postgres-dev 5433 开发数据库
Redis mbe-redis-dev 6381 开发缓存
PWA 前端 mbe-pwa-dev 3001 开发版前端
Cloudflare Tunnel mbe-tunnel-dev - 开发版公网访问

生产版服务

服务 容器名 本地端口 说明
API mbe-api 8000 生产版 API
PostgreSQL mbe-postgres 5432 生产数据库
Redis mbe-redis 6380 生产缓存
Admin UI mbe-admin-ui 3000 管理后台
PWA 前端 mbe-pwa 3000 生产版前端(与 Admin UI 冲突,需配置)
Cloudflare Tunnel mbe-tunnel - 生产版公网访问

🔍 检查服务状态

查看所有容器状态

docker ps --filter "name=mbe" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

查看特定环境容器

# 开发版
docker ps --filter "name=-dev" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

# 生产版
docker ps --filter "name=mbe-" --filter "name=!-dev" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"

健康检查

# 开发版 API 健康检查
curl http://localhost:8001/api/health

# 生产版 API 健康检查
curl http://localhost:8000/api/health

📍 访问地址

开发版

生产版


🛠️ 常用管理命令

查看日志

# 开发版日志
docker-compose -f docker-compose.dev.yml logs -f

# 生产版日志
docker-compose -f docker-compose.prod.yml logs -f

# 特定服务日志
docker logs -f mbe-api-dev      # 开发版 API
docker logs -f mbe-api           # 生产版 API

重启服务

# 重启开发版
docker-compose -f docker-compose.dev.yml restart

# 重启生产版
docker-compose -f docker-compose.prod.yml restart

# 重启特定服务
docker-compose -f docker-compose.dev.yml restart mbe-api-dev
docker-compose -f docker-compose.prod.yml restart mbe-api

停止服务

# 停止开发版
docker-compose -f docker-compose.dev.yml down

# 停止生产版
docker-compose -f docker-compose.prod.yml down

# 停止并删除数据卷(谨慎使用)
docker-compose -f docker-compose.dev.yml down -v
docker-compose -f docker-compose.prod.yml down -v

⚠️ 注意事项

1. 端口冲突

  • 开发版和生产版使用不同的端口,可以同时运行
  • PWA 前端在生产版中默认使用 3000 端口,与 Admin UI 冲突
  • 如需同时运行,需要修改 docker-compose.prod.yml 中的端口映射

2. 数据隔离

  • 开发版和生产版使用不同的数据库和 Redis
  • 开发版数据库:mbe_dev (端口 5433)
  • 生产版数据库:mbe (端口 5432)
  • 数据卷也是隔离的:pgdata-devpgdata

3. 镜像要求

  • 开发版需要 mbe-api:dev 镜像
  • 生产版需要 mbe-api:latest 镜像
  • 如果镜像不存在,需要先构建:
# 构建开发版镜像
docker build -t mbe-api:dev .

# 构建生产版镜像
docker build -t mbe-api:latest .

4. 环境变量

  • 开发版使用 .env 文件中的配置
  • 生产版也使用 .env 文件,但可以通过 docker-compose.prod.yml 覆盖
  • 确保 CLOUDFLARE_TUNNEL_TOKEN 等关键配置正确

🔧 故障排查

问题1: 容器启动失败

# 查看详细错误信息
docker-compose -f docker-compose.dev.yml logs

# 检查镜像是否存在
docker images | Select-String "mbe-api"

# 重新构建镜像
docker build -t mbe-api:dev .

问题2: 端口被占用

# 检查端口占用
netstat -ano | findstr "8001"
netstat -ano | findstr "8000"

# 停止占用端口的进程或修改 docker-compose 中的端口映射

问题3: 数据库连接失败

# 检查数据库容器状态
docker ps | Select-String "postgres"

# 查看数据库日志
docker logs mbe-postgres-dev
docker logs mbe-postgres

# 测试数据库连接
docker exec -it mbe-postgres-dev psql -U mbe -d mbe_dev
docker exec -it mbe-postgres psql -U mbe -d mbe

问题4: Cloudflare Tunnel 未连接

# 查看 Tunnel 日志
docker logs mbe-tunnel-dev
docker logs mbe-tunnel

# 检查 Token 配置
# 确保 .env 文件中的 CLOUDFLARE_TUNNEL_TOKEN 正确

📚 相关文档


最后更新: 2026-02-03