Spaces:
Sleeping
Sleeping
| # ÉTAPE 1: Image de base | |
| FROM python:3.11-slim | |
| # ÉTAPE 2: Configuration et Dossier de travail | |
| # Ligne supprimée (ENV PORT 8080) pour laisser Hugging Face Spaces injecter le port correct ($PORT, généralement 7860). | |
| ENV FLASK_APP app.py | |
| ENV GUNICORN_WORKERS 4 | |
| ENV GUNICORN_THREADS 2 | |
| # Création et utilisation du répertoire /app | |
| WORKDIR /app | |
| # ÉTAPE 3: Installation des dépendances (OPTIMISATION CACHING) | |
| # Copie uniquement de requirements.txt pour mettre en cache l'installation | |
| COPY requirements.txt . | |
| # Installation des dépendances du système (eSpeak, PortAudio) et Python | |
| RUN apt-get update && \ | |
| # SUPPRESSION: Retrait de l'ancienne version d'espeak et des données | |
| apt-get remove -y espeak libespeak1 espeak-data || echo "espeak non installé, continuer" && \ | |
| # AJOUT: Installation d'eSpeak-NG et libportaudio2 (pour la compatibilité) | |
| apt-get install -y espeak-ng libportaudio2 && \ | |
| pip install --no-cache-dir -r requirements.txt \ | |
| && rm requirements.txt | |
| # ÉTAPE 4: Copie de l'Application et des Fichiers | |
| # Nous copions tous les fichiers de l'application et nous assurons que | |
| # l'utilisateur 'user' en est le propriétaire. | |
| # CORRECTION MAJEURE : Ajout du dossier templates | |
| # Ceci est l'étape essentielle pour que Flask trouve vos fichiers HTML | |
| COPY templates /app/templates | |
| # Copie des autres fichiers (y compris app.py, votre point d'entrée) | |
| COPY app.py . | |
| COPY tts_engine.py . | |
| COPY gunicorn.conf.py . | |
| # Copie du script d'entrée | |
| COPY entrypoint.sh . | |
| # NOUVEAU: CORRECTION DES FINS DE LIGNE (Résout 'exec ./entrypoint.sh: no such file or directory') | |
| # Supprime le caractère de retour chariot (\r) | |
| RUN sed -i 's/\r$//' entrypoint.sh | |
| # Le rendre exécutable | |
| RUN chmod +x entrypoint.sh | |
| # ÉTAPE 5: Sécurité et Exécution | |
| # Création et bascule vers l'utilisateur non-root ('user') pour la sécurité | |
| RUN useradd -ms /bin/bash user | |
| RUN chown -R user:user /app | |
| USER user | |
| # Indique à Docker que le conteneur écoute sur ce port | |
| EXPOSE $PORT | |
| # Lance l'application via le script d'entrée | |
| CMD ["./entrypoint.sh"] |