| 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"] |