Spaces:
Running
Running
| # ============================================ | |
| # HF Spaces Dockerfile — 场景一致性检测 (CPU) | |
| # ============================================ | |
| FROM python:3.10-slim | |
| # 系统依赖(OpenCV 运行时 + 文件处理) | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| libgl1 \ | |
| libglib2.0-0 \ | |
| libsm6 \ | |
| libxext6 \ | |
| libxrender1 \ | |
| && rm -rf /var/lib/apt/lists/* | |
| WORKDIR /app | |
| # 1. 先安装 PyTorch CPU 版(与 paddlepaddle 分开安装避免冲突) | |
| RUN pip install --no-cache-dir torch torchvision --index-url https://download.pytorch.org/whl/cpu | |
| # 2. 安装其余 Python 依赖 | |
| COPY requirements.txt . | |
| RUN pip install --no-cache-dir -r requirements.txt | |
| # 3. 预下载 DINOv2 reg4 模型权重(约 85MB,构建时下载到镜像中) | |
| RUN python -c "import timm; timm.create_model('vit_small_patch14_reg4_dinov2', pretrained=True)" || echo "DINOv2 pre-download warning" | |
| # 4. 预下载 BGE-small-zh 模型权重(约 100MB) | |
| RUN python -c "from transformers import AutoTokenizer, BertModel; AutoTokenizer.from_pretrained('BAAI/bge-small-zh-v1.5'); BertModel.from_pretrained('BAAI/bge-small-zh-v1.5')" || echo "BGE pre-download warning" | |
| # 5. 预下载 PaddleOCR 模型(约 50MB,通过运行一次 OCR 触发下载) | |
| RUN python -c "from paddleocr import PaddleOCR; from PIL import Image; ocr=PaddleOCR(use_angle_cls=True, lang='ch'); img=Image.new('RGB',(100,100),'white'); img.save('/tmp/d.png'); ocr.ocr('/tmp/d.png', cls=True)" || echo "PaddleOCR pre-download warning" | |
| # 6. 复制应用代码 | |
| COPY . . | |
| # 7. 创建运行时目录 | |
| RUN mkdir -p /app/History_imgs /app/qdrant_data /app/Logs | |
| # HF Spaces Docker 默认端口 7860 | |
| EXPOSE 7860 | |
| ENV PORT=7860 | |
| # 启动服务 | |
| CMD ["python", "-m", "uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"] | |