FROM python:3.11-slim # 系统依赖:libgl/opencv(PyMuPDF 自带 PDF 渲染,无需 poppler) RUN apt-get update && apt-get install -y --no-install-recommends \ libgl1 \ libglib2.0-0 \ libsm6 \ libxext6 \ libxrender1 \ curl \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # 先装依赖(缓存层) COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt \ && pip install --no-cache-dir paddlepaddle==3.0.0 paddleocr==3.0.1 # 再拷代码 COPY . . # 模型预热(首次构建会下载模型到 /root/.paddleocr) RUN python -c "from app.core import warmup; warmup()" || true EXPOSE 8801 ENV PYTHONUNBUFFERED=1 CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8801", "--workers", "1"]