Spaces:
Sleeping
Sleeping
File size: 1,836 Bytes
67aa1ca 60470b6 67aa1ca 60470b6 67aa1ca 60470b6 67aa1ca 60470b6 67aa1ca 60470b6 67aa1ca 60470b6 67aa1ca 60470b6 67aa1ca 60470b6 67aa1ca | 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 46 47 48 49 | # =============================================================================
# Imagen Docker del backend (FastAPI + MongoDB).
# Pensada para desplegarse en HuggingFace Spaces (SDK: docker).
#
# HuggingFace ejecuta el contenedor con el usuario UID 1000 y expone el
# puerto declarado en `app_port` del README (7860 por defecto).
# =============================================================================
FROM python:3.11-slim
# - PYTHONDONTWRITEBYTECODE: no genera archivos .pyc
# - PYTHONUNBUFFERED: logs sin buffer (visibles en tiempo real en HF)
# - PORT: puerto de escucha (HuggingFace Spaces usa 7860)
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1 \
PORT=7860
# ca-certificates es necesario para la conexión TLS a MongoDB Atlas.
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# HuggingFace Spaces ejecuta el contenedor como el usuario UID 1000.
RUN useradd --create-home --uid 1000 appuser
WORKDIR /app
# Instala las dependencias primero para aprovechar la caché de capas.
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# Copia el código de la aplicación.
COPY app ./app
# Ejecuta sin privilegios de root.
USER appuser
# Documenta el puerto expuesto (debe coincidir con `app_port` del README).
EXPOSE 7860
# Comprobación de salud del contenedor.
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
CMD python -c "import os,urllib.request,sys; \
url='http://127.0.0.1:%s/health' % os.environ.get('PORT','7860'); \
sys.exit(0 if urllib.request.urlopen(url, timeout=4).status == 200 else 1)"
# El puerto se toma de la variable de entorno PORT (7860 en HuggingFace).
CMD ["sh", "-c", "uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-7860}"]
|