# ---- Single Stage: Simple, Fast, Robuste pour HF Spaces ---- FROM python:3.11-slim # 1. Métadonnées & Variables d'env LABEL maintainer="HF Space User" ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ PIP_NO_CACHE_DIR=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 \ YTDLP_NO_LAZY_EXTRACTORS=1 # 2. Install System Deps (FFMPEG + Certificats) en UNE seule couche RUN # Utilise --mount=type=cache pour accélérer les rebuilds locaux/HF RUN --mount=type=cache,target=/var/cache/apt \ --mount=type=cache,target=/var/lib/apt \ apt-get update && apt-get install -y --no-install-recommends \ ffmpeg \ ca-certificates \ curl \ && rm -rf /var/lib/apt/lists/* # 3. Créer user non-root (Sécurité HF) RUN useradd -m -u 1000 appuser # 4. Workdir & Permissions WORKDIR /app RUN mkdir -p /app/downloads && chown -R appuser:appuser /app # 5. Copier SEULEMENT requirements.txt d'abord (Cache Docker Layer) COPY --chown=appuser:appuser requirements.txt . # 6. Install Python Deps (Cache pip mount) # --no-deps légèrement plus rapide mais risqué, on garde standard. RUN --mount=type=cache,target=/root/.cache/pip \ pip install --no-cache-dir -r requirements.txt # 7. Copier le Code Applicatif (Dernière étape = cache max si code change) COPY --chown=appuser:appuser ./app ./app # 8. User & Launch USER appuser EXPOSE 7860 # HF Spaces attend le serveur sur 0.0.0.0:7860 # --proxy-headers --forwarded-allow-ips=* indispensable derrière le proxy HF CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "7860", "--proxy-headers", "--forwarded-allow-ips", "*"]