# Dockerfile with pre-installed models
# Build: docker build -f Dockerfile.with-models -t korap/conllu-spacy:with-models .

# 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
COPY requirements.txt /app/requirements.txt

# Install Python dependencies in virtual environment
RUN python -m venv venv
RUN venv/bin/pip install --upgrade pip
RUN venv/bin/pip install -r requirements.txt

# Download spaCy models to /local/models
RUN mkdir -p /local/models

# Download the default model (de_core_news_lg)
RUN venv/bin/python -m spacy download de_core_news_lg --no-cache-dir

# Move model to /local/models for persistence
RUN MODEL_PATH=$(venv/bin/python -c "import site; print(site.getsitepackages()[0] + '/de_core_news_lg')") && \
    mv "$MODEL_PATH" /local/models/de_core_news_lg

# Optionally download additional models
# Uncomment to include medium model:
# RUN venv/bin/python -m spacy download de_core_news_md --no-cache-dir && \
#     MODEL_PATH=$(venv/bin/python -c "import site; print(site.getsitepackages()[0] + '/de_core_news_md')") && \
#     mv "$MODEL_PATH" /local/models/de_core_news_md

# Uncomment to include small model:
# RUN venv/bin/python -m spacy download de_core_news_sm --no-cache-dir && \
#     MODEL_PATH=$(venv/bin/python -c "import site; print(site.getsitepackages()[0] + '/de_core_news_sm')") && \
#     mv "$MODEL_PATH" /local/models/de_core_news_sm

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

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

# Copy virtual environment from builder
COPY --from=builder /app/venv /app/venv

# Copy pre-downloaded models
COPY --from=builder /local/models /local/models

# Copy application code
COPY lib /app/lib
COPY systems /app/systems
COPY my_utils /app/my_utils
COPY docker-entrypoint.sh /docker-entrypoint.sh
COPY download_with_progress.py /app/download_with_progress.py

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

# spaCy processing configuration
ENV SPACY_USE_DEPENDENCIES="True"
ENV SPACY_USE_GERMALEMMA="True"
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
RUN mkdir -p "/app/logs" "/app/tmp"

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

# Add non-root user
RUN groupadd -r appuser && useradd -r -g appuser appuser

# Make entrypoint executable and set permissions
RUN chmod +x /docker-entrypoint.sh && \
    chmod +x /app/download_with_progress.py

# Change ownership of app directories to appuser
RUN chown -R appuser:appuser /app /local /docker-entrypoint.sh

# Switch to non-root user
USER appuser

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