File size: 1,813 Bytes
e16aadc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27fd084
e16aadc
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# ============================================
# 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"]