point / docs /README_HUGGINGFACE.md
eithney
code ref
e74eb63
|
Raw
History Blame Contribute Delete
5.49 kB
# 🚀 在 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`
享受你的应用吧!🚀