Spaces:
Sleeping
Sleeping
| # 🚀 在 Hugging Face Spaces 上部署 Flask 应用 | |
| ## 📋 部署步骤 | |
| ### 1. 创建 Hugging Face Space | |
| 1. 访问 https://huggingface.co/spaces | |
| 2. 点击 "Create new Space" | |
| 3. 填写信息: | |
| - **Space name**: 你的应用名称(例如:english-learning-app) | |
| - **License**: 选择合适的许可证 | |
| - **Select the Space SDK**: 选择 **Docker**(重要!) | |
| - **Visibility**: Public 或 Private | |
| ### 2. 推送代码到 Hugging Face Space | |
| #### 方式一:使用 Git(推荐) | |
| ```bash | |
| # 添加 Hugging Face Space 作为远程仓库 | |
| git remote add space https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME | |
| # 推送代码 | |
| git add . | |
| git commit -m "部署 Flask 应用到 Hugging Face Spaces" | |
| git push space main | |
| ``` | |
| #### 方式二:使用 Hugging Face Hub CLI | |
| ```bash | |
| # 安装 Hugging Face Hub CLI | |
| pip install huggingface-hub | |
| # 登录 | |
| huggingface-cli login | |
| # 上传文件 | |
| huggingface-cli upload YOUR_USERNAME/YOUR_SPACE_NAME . . --repo-type=space | |
| ``` | |
| ### 3. 等待构建 | |
| - Hugging Face Spaces 会自动检测 `Dockerfile` | |
| - 构建过程需要 5-10 分钟 | |
| - 可以在 Space 页面查看构建日志 | |
| ### 4. 访问应用 | |
| 构建完成后,应用将在以下地址可用: | |
| ``` | |
| https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space | |
| ``` | |
| --- | |
| ## 🔧 配置说明 | |
| ### Dockerfile 配置 | |
| 当前 `Dockerfile` 已配置为使用: | |
| - **Python 3.12** | |
| - **Gunicorn** 生产服务器(4 个工作进程) | |
| - **端口 7860**(Hugging Face Spaces 要求) | |
| - **健康检查**:自动检测应用状态 | |
| ### 环境变量 | |
| 如需设置环境变量,在 Hugging Face Space 设置中添加: | |
| 1. 进入你的 Space 页面 | |
| 2. 点击 "Settings" | |
| 3. 在 "Repository secrets" 部分添加环境变量: | |
| - `SECRET_KEY`: Flask 密钥(生产环境必需) | |
| - `OPENSEARCH_HOST`: OpenSearch 主机(如需要) | |
| - `OPENSEARCH_PORT`: OpenSearch 端口(如需要) | |
| --- | |
| ## 📝 重要文件清单 | |
| 确保以下文件存在于仓库根目录: | |
| - ✅ `Dockerfile` - Docker 构建文件 | |
| - ✅ `requirements.txt` - Python 依赖 | |
| - ✅ `app.py` - Flask 主应用 | |
| - ✅ `config.py` - 配置文件 | |
| - ✅ `index.html` - 前端页面 | |
| - ✅ `style.css` - 样式文件 | |
| - ✅ `script.js` - JavaScript 文件 | |
| - ✅ `book_10242.json` - 书籍数据 | |
| - ✅ `static/` - 静态资源目录 | |
| - ✅ `assets/` - 音频、图片等资源 | |
| --- | |
| ## 🧪 本地测试 Docker 构建 | |
| 在推送到 Hugging Face 之前,建议本地测试: | |
| ```bash | |
| # 构建 Docker 镜像 | |
| docker build -t english-learning-app . | |
| # 运行容器 | |
| docker run -p 7860:7860 english-learning-app | |
| # 测试应用 | |
| curl http://localhost:7860/api/health | |
| ``` | |
| 如果本地测试成功,推送到 Hugging Face Spaces 后应该也能正常运行。 | |
| --- | |
| ## 🔍 故障排查 | |
| ### 问题:构建失败 | |
| **解决方案**: | |
| 1. 检查 Hugging Face Space 的构建日志 | |
| 2. 确保 `requirements.txt` 中的所有依赖都能正确安装 | |
| 3. 验证 `Dockerfile` 语法正确 | |
| ### 问题:应用启动失败 | |
| **解决方案**: | |
| 1. 检查应用日志(在 Space 页面的 "Logs" 标签) | |
| 2. 确认必要文件都已上传(特别是 `book_10242.json`) | |
| 3. 检查端口是否正确设置为 7860 | |
| ### 问题:静态资源无法访问 | |
| **解决方案**: | |
| 1. 确认 `static/` 和 `assets/` 目录已上传 | |
| 2. 检查 `.gitignore` 是否误排除了必要文件 | |
| 3. 验证文件路径大小写正确(Linux 区分大小写) | |
| ### 问题:应用运行缓慢 | |
| **解决方案**: | |
| 1. 检查 `book_10242.json` 文件大小 | |
| 2. 考虑使用 Hugging Face Spaces 的付费套餐(更多资源) | |
| 3. 优化数据加载方式(延迟加载、缓存等) | |
| --- | |
| ## 📊 性能优化建议 | |
| ### 1. 使用 Gunicorn(已配置) | |
| ```dockerfile | |
| CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:7860", "--timeout", "120", "app:app"] | |
| ``` | |
| ### 2. 静态资源优化 | |
| 考虑将大型静态资源(音频、图片)上传到 CDN 或 Hugging Face Hub。 | |
| ### 3. 数据库持久化 | |
| Hugging Face Spaces 提供持久化存储: | |
| ```python | |
| # 在 app.py 中使用持久化目录 | |
| import os | |
| PERSISTENT_DIR = os.environ.get('SPACE_PERSISTENT_DIR', '.') | |
| ``` | |
| --- | |
| ## 🌐 访问 API | |
| 部署后,可以通过以下端点访问: | |
| ```bash | |
| # 健康检查 | |
| curl https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space/api/health | |
| # 获取书籍信息 | |
| curl https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space/api/book/info | |
| # 搜索内容 | |
| curl -X POST https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space/api/search \ | |
| -H "Content-Type: application/json" \ | |
| -d '{"keyword": "hello"}' | |
| ``` | |
| --- | |
| ## 📚 参考资源 | |
| - [Hugging Face Spaces 文档](https://huggingface.co/docs/hub/spaces) | |
| - [Docker Spaces 指南](https://huggingface.co/docs/hub/spaces-sdks-docker) | |
| - [Flask 部署最佳实践](https://flask.palletsprojects.com/en/latest/deploying/) | |
| --- | |
| ## ⚙️ 高级配置 | |
| ### 自定义启动命令 | |
| 如果需要使用 Flask 内置服务器而非 Gunicorn,修改 `Dockerfile` 最后一行: | |
| ```dockerfile | |
| CMD ["python3.12", "app.py"] | |
| ``` | |
| ### 添加工作进程 | |
| 根据你的 Space 资源调整 Gunicorn 工作进程数: | |
| ```dockerfile | |
| # 2 个进程(较小的 Space) | |
| CMD ["gunicorn", "-w", "2", "-b", "0.0.0.0:7860", "app:app"] | |
| # 8 个进程(更大的 Space) | |
| CMD ["gunicorn", "-w", "8", "-b", "0.0.0.0:7860", "app:app"] | |
| ``` | |
| --- | |
| ## 🎉 部署完成! | |
| 部署成功后,你的 Flask 英语学习应用将在 Hugging Face Spaces 上运行! | |
| **示例 URL**: `https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space` | |
| 享受你的应用吧!🚀 | |