FROM python:3.10-slim WORKDIR /app # --- SYSTEM-ABHÄNGIGKEITEN --- # Wir installieren die Werkzeuge sicherheitshalber mit (für evtl. Linking), # aber WICHTIG: Wir kompilieren das LLM nicht selbst, um den Timeout zu verhindern! RUN apt-get update && apt-get install -y --no-install-recommends \ curl gcc g++ make cmake libopenblas-dev \ && rm -rf /var/lib/apt/lists/* # String ändern, um den Docker-Cache gezielt zu invalidieren. ENV CACHE_BUSTER="2026-03-18_v2_GPU" # --- VOLUMES & CACHE --- ENV MODEL_CACHE_DIR="/app/models" ENV HF_HOME="/app/models" # --- DER TIMEOUT-KILLER --- # Wir installieren das schwere llama-cpp-python Paket direkt als fertiges Wheel. # Das dauert nur Sekunden und verhindert den 45-Minuten-Absturz. RUN pip install --no-cache-dir llama-cpp-python \ --extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cu121 # 1. ZUERST nur die requirements.txt kopieren COPY requirements.txt ./ # 2. PIP upgraden und restliche Pakete installieren RUN pip install --upgrade pip setuptools wheel RUN pip install --no-cache-dir -r requirements.txt # 3. ERST DANACH den restlichen Code kopieren COPY src/ ./src/ COPY assets/ ./assets/ COPY .streamlit .streamlit # Streamlit-Theme ENV STREAMLIT_THEME_PRIMARY_COLOR="#FF6600" ENV STREAMLIT_THEME_BACKGROUND_COLOR="#0E1117" ENV STREAMLIT_THEME_SECONDARY_BACKGROUND_COLOR="#262730" ENV STREAMLIT_THEME_TEXT_COLOR="#FAFAFA" EXPOSE 8501 HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health ENTRYPOINT ["streamlit", "run", "src/app.py", "--server.port=7860", "--server.address=0.0.0.0"]