# Slim version without GermaLemma (saves ~180MB)
# Multi-stage Docker build for size optimization
FROM python:3.12-slim-bookworm AS builder

# Install build dependencies
RUN apt-get update && apt-get install -y \
    gcc \
    g++ \
    && rm -rf /var/lib/apt/lists/*

# Set environment variables
ENV PIP_CACHE_DIR="/tmp/.cache/pip" \
    PYTHONPATH="PYTHONPATH:."
ENV VIRTUAL_ENV=/app/venv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"

# Set the working directory and copy requirements
WORKDIR /app

# Install Python dependencies WITHOUT germalemma
RUN python -m venv venv
RUN venv/bin/pip install --upgrade pip wheel thinc spacy

# Production stage
FROM python:3.12-slim-bookworm AS production

# Install minimal runtime dependencies
RUN apt-get update && apt-get install -y \
    wget \
    coreutils \
    && rm -rf /var/lib/apt/lists/* \
    && apt-get clean

# Add non-root user FIRST (before copying files)
RUN groupadd -r appuser && useradd -r -g appuser appuser

# Copy virtual environment from builder and set ownership immediately
COPY --from=builder --chown=appuser:appuser /app/venv /app/venv

# Copy application code with correct ownership
COPY --chown=appuser:appuser lib /app/lib
COPY --chown=appuser:appuser systems /app/systems
COPY --chown=appuser:appuser my_utils /app/my_utils
COPY --chown=appuser:appuser download_with_progress.py /app/download_with_progress.py
COPY --chown=appuser:appuser list_spacy_models.py /app/list_spacy_models.py
COPY --chown=appuser:appuser docker-entrypoint.sh /docker-entrypoint.sh

# Set environment variables
ENV VIRTUAL_ENV=/app/venv
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
ENV PYTHONPATH="PYTHONPATH:."

# spaCy processing configuration - GermaLemma disabled by default
ENV SPACY_USE_DEPENDENCIES="True"
ENV SPACY_USE_GERMALEMMA="False"
ENV SPACY_PARSE_TIMEOUT="30"
ENV SPACY_MAX_SENTENCE_LENGTH="500"
ENV SPACY_N_PROCESS="10"
ENV SPACY_BATCH_SIZE="2000"
ENV SPACY_CHUNK_SIZE="20000"

WORKDIR /app

# Create directories with correct ownership
RUN mkdir -p "/app/logs" "/app/tmp" "/local/models" && \
    chown -R appuser:appuser "/app/logs" "/app/tmp" "/local/models" && \
    chmod +x /docker-entrypoint.sh && \
    chmod +x /app/download_with_progress.py && \
    chmod +x /app/list_spacy_models.py

# Set temp directories to use app directory instead of system /tmp
ENV TMPDIR="/app/tmp"
ENV TEMP="/app/tmp"
ENV TMP="/app/tmp"

# Switch to non-root user
USER appuser

# Define the entry point
ENTRYPOINT ["/docker-entrypoint.sh"]
