# Dockerfile optimizado para Hugging Face Spaces FROM python:3.11-slim # Establecer el directorio de trabajo WORKDIR /code # Instalar dependencias del sistema RUN apt-get update && apt-get install -y \ build-essential \ && rm -rf /var/lib/apt/lists/* # Crear un usuario no root para mejorar la seguridad RUN adduser --disabled-password --gecos '' appuser && \ mkdir -p /code/static && \ chown -R appuser:appuser /code # Copiar solo requirements.txt primero para aprovechar la caché de Docker COPY --chown=appuser:appuser requirements.txt . # Instalar dependencias de Python con pip limpio RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt # Copiar archivos estáticos y de configuración primero COPY --chown=appuser:appuser static/swagger.html /code/static/ COPY --chown=appuser:appuser openapi.yaml /code/ # Copiar el resto de los archivos del proyecto COPY --chown=appuser:appuser server.py ./ COPY --chown=appuser:appuser hypercorn.toml ./ # Si tienes otros archivos necesarios, cópialos aquí # Por ejemplo: # COPY --chown=appuser:appuser other_module.py ./ # Variables de entorno para Hugging Face Spaces ENV PYTHONUNBUFFERED=1 ENV PYTHONPATH=/code ENV PORT=7860 ENV PYTHONDONTWRITEBYTECODE=1 # Cambiar al usuario no root para evitar privilegios elevados USER appuser # Exponer el puerto que Hugging Face Spaces espera EXPOSE 7860 # Comando para ejecutar la aplicación usando Hypercorn CMD ["hypercorn", "--config", "hypercorn.toml", "server:app"]