# Utilise une image Python de base FROM python:3.11-slim # Définit le répertoire de travail dans le conteneur WORKDIR /app # Installe les dépendances du système (outils de compilation et utilitaires) RUN apt-get update && apt-get install -y \ build-essential \ cmake \ git \ aria2 \ wget \ libcurl4-openssl-dev \ pkg-config \ && rm -rf /var/lib/apt/lists/* # Clone le dépôt llama.cpp, puis compile-le RUN git clone https://github.com/ggerganov/llama.cpp.git WORKDIR /app/llama.cpp RUN mkdir build WORKDIR /app/llama.cpp/build RUN cmake .. -DLLAMA_CURL=1 RUN cmake --build . --config Release WORKDIR /app # Crée tous les dossiers nécessaires qui n'existent pas encore RUN mkdir -p logs data config server models .kaggle .streamlit # Télécharge le modèle GGUF avec la bonne URL RUN wget -P models/ "https://huggingface.co/ggml-org/Qwen2.5-Coder-1.5B-Q8_0-GGUF/resolve/main/qwen2.5-coder-1.5b-q8_0.gguf" # Copie tous les fichiers de votre dépôt dans le conteneur COPY . /app # Rend le script de démarrage exécutable RUN chmod +x ./start.sh # Change la propriété des dossiers à l'utilisateur non-root par défaut (1000:1000) RUN chown -R 1000:1000 logs data config server models .kaggle .streamlit # Définit les dossiers de configuration dans le répertoire de travail pour les permissions ENV KAGGLE_CONFIG_DIR=/app ENV STREAMLIT_SERVER_INFO_DIR=/app/.streamlit ENV STREAMLIT_BROWSER_GATHER_USAGE_STATS=false # Installe les dépendances Python RUN pip install --no-cache-dir -r requirements.txt # Définit le point d'entrée du conteneur ENTRYPOINT ["/app/start.sh"]