# Ce fichier Dockerfile dans le dossier racine du projet14 objectif1 poc/ # Fichier adapté pour faire fonctionner sur HF Spaces. # Résolution des désalignements : Abandon complet de l'arborescence src/ obsolète, # Didier : mise en commentaires de HEALTHCHECK car non compatible HF Spaces # intégration de l'index FAISS local et routage impératif sur le port standardisé 7860 FROM python:3.13.5-slim # Configuration des variables d'environnement pour Python et Streamlit ENV PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 \ STREAMLIT_SERVER_PORT=7860 \ STREAMLIT_SERVER_ADDRESS=0.0.0.0 \ STREAMLIT_SERVER_HEADLESS=true WORKDIR /app # Installation des dépendances système nécessaires RUN apt-get update && apt-get install -y \ build-essential \ curl \ git \ && rm -rf /var/lib/apt/lists/* # Didier : Préparation des répertoires de l'arborescence réelle de poc/ # Création préalable pour sécuriser les droits d'écriture des logs et de Streamlit sur HF RUN mkdir -p /app/data /app/utils /app/corpus /app/pages /app/.streamlit # Étape 1 : Copie et installation des dépendances Python COPY requirements.txt ./ RUN pip3 install --no-cache-dir -r requirements.txt # Étape 2 : Copie chirurgicale calquée sur l'arborescence réelle de poc/ (sans mention de src/) # On copie les scripts principaux de l'interface validés en local COPY streamlit_app.py ./ COPY MistralChat.py ./ # On copie les modules du Socle Technique Unique et de Configuration COPY utils/ ./utils/ # Didier : Ingestion de l'index FAISS pré-généré localement (< 2 Mo) pour le rendre immortel sur Git COPY data/ ./data/ # Copie du corpus de connaissances Markdown et des pages secondaires (Feedback Viewer) COPY corpus/ ./corpus/ COPY pages/ ./pages/ # Exposition du port unique et obligatoire exigé par Hugging Face Spaces EXPOSE 7860 # Vérification de l'état de santé du conteneur réalignée sur le port de production 7860 #HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ # CMD curl --fail http://localhost:7860/_stcore/health || exit 1 # Didier : Lancement officiel de l'interface Métier unifiée sur le port requis par HF ENTRYPOINT ["streamlit", "run", "streamlit_app.py"]