FROM python:3.11-slim AS builder

WORKDIR /build

# System Dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
    git \
    curl \
    && rm -rf /var/lib/apt/lists/*

# uv installieren
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv

# Projekt-Dateien für Dependency-Installation kopieren
COPY pyproject.toml uv.lock* ./
COPY README.md ./
COPY scripts/update_versions.py ./scripts/update_versions.py

# Minimal src structure kopieren für Project-Installation
RUN mkdir -p src/questra
COPY src/questra/__init__.py ./src/questra/__init__.py

# Dependencies installieren (docs + main dependencies für mkdocstrings)
RUN uv sync --group docs

# Rest des Projekts kopieren (inkl. .git für Submodule)
COPY . .

# Git Submodules initialisieren (für Symlinks notwendig)
RUN git submodule update --init --recursive || true

# Submodule packages lokal installieren (für mkdocstrings)
RUN uv pip install --system -e ./authentication -e ./data

# PYTHONPATH setzen, damit mkdocstrings die Module findet
ENV PYTHONPATH="/build/authentication/src:/build/data/src"

# Dokumentation bauen (mkdocs muss im sync schon installiert sein)
RUN .venv/bin/mkdocs build

# Production stage
FROM nginx:stable-alpine3.21-slim

# Built docs kopieren
COPY --from=builder /build/site /usr/share/nginx/html

# Custom nginx config
COPY nginx.conf /etc/nginx/nginx.conf
RUN touch /var/run/nginx.pid
RUN chown -R nginx:nginx /var/run/nginx.pid /usr/share/nginx /var/cache/nginx /var/log/nginx /etc/nginx/conf.d

USER nginx
EXPOSE 3000
CMD ["nginx", "-g", "daemon off;"]