Explicite/api-test
0
1FROM python:3.12-slim2 3# Evita prompts, mejora logs4ENV PYTHONDONTWRITEBYTECODE=1 \5 PYTHONUNBUFFERED=1 \6 PIP_NO_CACHE_DIR=1 \7 PIP_DISABLE_PIP_VERSION_CHECK=18 9# Dependencias del sistema:10# - libgl1 y libglib2.0-0: necesarias para OpenCV11# - build-essential/g++/python3-dev/pkg-config: necesarios para compilar wheels (ej: insightface)12# - ca-certificates/curl/git: útil para descargas y debug13# - tesseract-ocr + lenguajes: OCR para clasificación de documentos14RUN apt-get update && apt-get install -y --no-install-recommends \15 libgl1 \16 libglib2.0-0 \17 curl \18 ca-certificates \19 git \20 build-essential \21 g++ \22 python3-dev \23 pkg-config \24 tesseract-ocr \25 tesseract-ocr-eng \26 tesseract-ocr-spa \27 && rm -rf /var/lib/apt/lists/*28 29WORKDIR /app30 31# Instala deps primero (mejor cache)32COPY requirements.txt /app/requirements.txt33RUN pip install --upgrade pip && pip install -r requirements.txt34 35# Copia tu código36COPY app /app/app37 38# Cachear modelos de InsightFace en build (recomendado)39# InsightFace usa por defecto ~/.insightface; lo movemos dentro del contenedor40ENV INSIGHTFACE_HOME=/app/.insightface41RUN mkdir -p /app/.insightface42 43# Pre-descarga y prepara el modelo (para que no tarde en el primer request)44RUN python -c "from insightface.app import FaceAnalysis; fa=FaceAnalysis(name='buffalo_l'); fa.prepare(ctx_id=-1, det_size=(640,640)); print('InsightFace model ready')"45 46# Hugging Face Spaces suele exponer 786047EXPOSE 786048 49# Respeta PORT si HF lo define50CMD ["bash", "-lc", "uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-7860}"]51 