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
📍 访问地址
开发版
本地访问:
- API: http://localhost:8001
- API 文档: http://localhost:8001/docs
- PWA 前端: http://localhost:3001
公网访问:
生产版
本地访问:
- API: http://localhost:8000
- API 文档: http://localhost:8000/docs
- Admin UI: http://localhost:3000
公网访问:
🛠️ 常用管理命令
查看日志
# 开发版日志
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-dev和pgdata
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