Spaces:
Sleeping
Sleeping
eithney
Refactor application to Flask: enhance structure with RESTful API, static file support, and logging. Update Dockerfile for production with Gunicorn and health checks. Expand requirements for Flask and OpenSearch integration.
b0a1454 | # 部署到 Hugging Face Spaces 脚本 | |
| # 设置颜色输出 | |
| GREEN='\033[0;32m' | |
| BLUE='\033[0;34m' | |
| RED='\033[0;31m' | |
| YELLOW='\033[1;33m' | |
| NC='\033[0m' # No Color | |
| echo -e "${BLUE}================================${NC}" | |
| echo -e "${BLUE}部署到 Hugging Face Spaces${NC}" | |
| echo -e "${BLUE}================================${NC}" | |
| # 检查是否安装了 git | |
| if ! command -v git &> /dev/null; then | |
| echo -e "${RED}❌ 错误: 未安装 Git${NC}" | |
| exit 1 | |
| fi | |
| # 获取用户信息 | |
| echo -e "\n${YELLOW}请输入你的 Hugging Face 信息:${NC}" | |
| read -p "Hugging Face 用户名: " HF_USERNAME | |
| read -p "Space 名称: " SPACE_NAME | |
| if [ -z "$HF_USERNAME" ] || [ -z "$SPACE_NAME" ]; then | |
| echo -e "${RED}❌ 错误: 用户名和 Space 名称不能为空${NC}" | |
| exit 1 | |
| fi | |
| # 构建远程仓库 URL | |
| SPACE_URL="https://huggingface.co/spaces/${HF_USERNAME}/${SPACE_NAME}" | |
| echo -e "\n${GREEN}Space URL: ${SPACE_URL}${NC}" | |
| # 检查是否已经添加了 space 远程仓库 | |
| if git remote | grep -q "^space$"; then | |
| echo -e "${YELLOW}⚠️ 检测到已存在的 'space' 远程仓库${NC}" | |
| read -p "是否更新远程仓库地址? (y/n): " UPDATE_REMOTE | |
| if [ "$UPDATE_REMOTE" = "y" ]; then | |
| git remote set-url space ${SPACE_URL} | |
| echo -e "${GREEN}✅ 已更新远程仓库地址${NC}" | |
| fi | |
| else | |
| # 添加 Hugging Face Space 作为远程仓库 | |
| git remote add space ${SPACE_URL} | |
| echo -e "${GREEN}✅ 已添加远程仓库${NC}" | |
| fi | |
| # 检查 Dockerfile 是否存在 | |
| if [ ! -f "Dockerfile" ]; then | |
| echo -e "${RED}❌ 错误: 未找到 Dockerfile${NC}" | |
| exit 1 | |
| fi | |
| # 检查必要文件 | |
| echo -e "\n${BLUE}检查必要文件...${NC}" | |
| REQUIRED_FILES=("app.py" "config.py" "requirements.txt" "index.html" "book_10242.json") | |
| MISSING_FILES=() | |
| for file in "${REQUIRED_FILES[@]}"; do | |
| if [ -f "$file" ]; then | |
| echo -e "${GREEN} ✅ $file${NC}" | |
| else | |
| echo -e "${RED} ❌ $file (缺失)${NC}" | |
| MISSING_FILES+=("$file") | |
| fi | |
| done | |
| if [ ${#MISSING_FILES[@]} -gt 0 ]; then | |
| echo -e "${RED}❌ 缺少必要文件,部署可能失败${NC}" | |
| read -p "是否继续? (y/n): " CONTINUE | |
| if [ "$CONTINUE" != "y" ]; then | |
| exit 1 | |
| fi | |
| fi | |
| # 检查 Git 状态 | |
| echo -e "\n${BLUE}检查 Git 状态...${NC}" | |
| if [ -n "$(git status --porcelain)" ]; then | |
| echo -e "${YELLOW}⚠️ 检测到未提交的更改${NC}" | |
| git status --short | |
| read -p "是否添加并提交这些更改? (y/n): " COMMIT_CHANGES | |
| if [ "$COMMIT_CHANGES" = "y" ]; then | |
| git add . | |
| read -p "提交信息 (默认: 'Deploy Flask app to Hugging Face Spaces'): " COMMIT_MSG | |
| COMMIT_MSG=${COMMIT_MSG:-"Deploy Flask app to Hugging Face Spaces"} | |
| git commit -m "$COMMIT_MSG" | |
| echo -e "${GREEN}✅ 已提交更改${NC}" | |
| else | |
| echo -e "${YELLOW}⚠️ 未提交的更改不会被推送${NC}" | |
| fi | |
| else | |
| echo -e "${GREEN}✅ 工作目录干净${NC}" | |
| fi | |
| # 推送到 Hugging Face Spaces | |
| echo -e "\n${BLUE}推送到 Hugging Face Spaces...${NC}" | |
| echo -e "${YELLOW}注意: 可能需要输入 Hugging Face 访问令牌${NC}" | |
| echo -e "${YELLOW}获取令牌: https://huggingface.co/settings/tokens${NC}" | |
| read -p "是否现在推送? (y/n): " PUSH_NOW | |
| if [ "$PUSH_NOW" = "y" ]; then | |
| # 获取当前分支 | |
| CURRENT_BRANCH=$(git branch --show-current) | |
| echo -e "${BLUE}当前分支: ${CURRENT_BRANCH}${NC}" | |
| # 推送到 space | |
| if git push space ${CURRENT_BRANCH}:main -f; then | |
| echo -e "\n${GREEN}🎉 部署成功!${NC}" | |
| echo -e "${GREEN}Space URL: ${SPACE_URL}${NC}" | |
| echo -e "${GREEN}应用 URL: https://${HF_USERNAME}-${SPACE_NAME}.hf.space${NC}" | |
| echo -e "\n${YELLOW}提示: 首次部署需要 5-10 分钟构建时间${NC}" | |
| echo -e "${YELLOW}可以在 Space 页面查看构建日志${NC}" | |
| else | |
| echo -e "${RED}❌ 推送失败${NC}" | |
| echo -e "${YELLOW}可能的原因:${NC}" | |
| echo -e " 1. 未登录 Hugging Face (需要访问令牌)" | |
| echo -e " 2. Space 不存在 (需要先在网页上创建 Space)" | |
| echo -e " 3. 网络连接问题" | |
| exit 1 | |
| fi | |
| else | |
| echo -e "${YELLOW}已取消推送${NC}" | |
| echo -e "\n${BLUE}手动推送命令:${NC}" | |
| echo -e " git push space main" | |
| fi | |
| echo -e "\n${BLUE}================================${NC}" | |
| echo -e "${GREEN}部署流程完成!${NC}" | |
| echo -e "${BLUE}================================${NC}" | |