3.5 KiB
3.5 KiB
InfoGenie 后端 Docker 部署指南
项目概述
InfoGenie 是一个基于 Flask 的 Python 后端应用,提供用户认证、AI 模型应用、小游戏等功能。
Docker 部署
前置要求
- Docker >= 20.0
- Docker Compose >= 2.0
快速开始
-
克隆项目并进入后端目录
cd InfoGenie-backend -
设置环境变量
cp .env.example .env # 如果有示例文件 # 编辑 .env 文件,设置必要的环境变量 -
构建并运行
# 方法1:使用构建脚本 ./build_docker.sh # 方法2:使用 Docker Compose(推荐) docker-compose up -d
环境变量配置
在 .env 文件中配置以下变量:
# Flask 配置
SECRET_KEY=your-secret-key-here
FLASK_ENV=production
# MongoDB 配置
MONGO_URI=mongodb://mongodb:27017/InfoGenie
# 邮件配置
MAIL_USERNAME=your-email@qq.com
MAIL_PASSWORD=your-app-password
# AI 配置(可选)
# 在 ai_config.json 中配置 AI API 密钥
服务端口
- 后端 API:
http://localhost:5002 - MongoDB:
localhost:27017 - 健康检查:
http://localhost:5002/api/health
Docker Compose 命令
# 启动服务
docker-compose up -d
# 查看日志
docker-compose logs -f infogenie-backend
# 停止服务
docker-compose down
# 重建镜像
docker-compose build --no-cache
# 清理数据卷
docker-compose down -v
单独构建 Docker 镜像
如果不需要 MongoDB,可以单独构建后端镜像:
# 构建镜像
docker build -t infogenie-backend:latest .
# 运行容器(需要外部 MongoDB)
docker run -d \
--name infogenie-backend \
-p 5002:5002 \
-e MONGO_URI=mongodb://your-mongo-host:27017/InfoGenie \
-e SECRET_KEY=your-secret-key \
infogenie-backend:latest
项目结构
InfoGenie-backend/
├── Dockerfile # Docker 镜像构建文件
├── docker-compose.yml # Docker Compose 配置
├── build_docker.sh # 构建脚本
├── .dockerignore # Docker 忽略文件
├── app.py # Flask 应用主入口
├── config.py # 应用配置
├── requirements.txt # Python 依赖
├── ai_config.json # AI 模型配置
├── modules/ # 功能模块
│ ├── auth.py # 用户认证
│ ├── user_management.py # 用户管理
│ ├── email_service.py # 邮件服务
│ └── aimodelapp.py # AI 模型应用
└── test/ # 测试文件
注意事项
- 安全性: 生产环境请使用强密码和随机生成的 SECRET_KEY
- 数据库: 默认使用 MongoDB 6.0,确保数据持久化
- 端口: 如需修改端口,请同时更新 Dockerfile 和 docker-compose.yml
- 日志: 应用日志通过
docker-compose logs查看 - 备份: 重要数据请定期备份 MongoDB 数据卷
故障排除
常见问题
-
端口占用
# 检查端口占用 lsof -i :5002 # 修改端口映射 docker-compose up -d --scale infogenie-backend=0 docker-compose up -d -
数据库连接失败
# 检查 MongoDB 状态 docker-compose ps docker-compose logs mongodb -
构建失败
# 清理缓存重新构建 docker system prune -f docker-compose build --no-cache
开发环境
本地开发仍可使用原有的 start_backend.sh 脚本:
./start_backend.sh
许可证
本项目采用 MIT 许可证。