blob: 3f7be4daa69b0306f3835b4dc861e663df359c45 [file] [log] [blame]
Marc Kupietz86044852025-11-29 10:19:03 +01001# Multi-stage Docker build for size optimization
2FROM python:3.12-slim-bookworm AS builder
3
4# Install build dependencies
5RUN apt-get update && apt-get install -y \
6 gcc \
7 g++ \
8 && rm -rf /var/lib/apt/lists/*
9
10# Set environment variables
11ENV PIP_CACHE_DIR="/tmp/.cache/pip" \
12 PYTHONPATH="PYTHONPATH:."
13ENV VIRTUAL_ENV=/app/venv
14ENV PATH="$VIRTUAL_ENV/bin:$PATH"
15
16# Set the working directory and copy requirements
17WORKDIR /app
18COPY requirements.txt /app/requirements.txt
19
20# Install Python dependencies in virtual environment
21RUN python -m venv venv
22RUN venv/bin/pip install --upgrade pip
23RUN venv/bin/pip install -r requirements.txt
24
25# Production stage
26FROM python:3.12-slim-bookworm AS production
27
28# Install minimal runtime dependencies
29RUN apt-get update && apt-get install -y \
30 wget \
31 coreutils \
32 && rm -rf /var/lib/apt/lists/* \
33 && apt-get clean
34
35# Copy virtual environment from builder
36COPY --from=builder /app/venv /app/venv
37
38# Copy application code
39COPY lib /app/lib
40COPY systems /app/systems
41COPY my_utils /app/my_utils
42COPY docker-entrypoint.sh /docker-entrypoint.sh
43COPY download_with_progress.py /app/download_with_progress.py
44
45# Set environment variables
46ENV VIRTUAL_ENV=/app/venv
47ENV PATH="$VIRTUAL_ENV/bin:$PATH"
48ENV PYTHONPATH="PYTHONPATH:."
49
50# spaCy processing configuration
51ENV SPACY_USE_DEPENDENCIES="True"
52ENV SPACY_USE_GERMALEMMA="True"
53ENV SPACY_PARSE_TIMEOUT="30"
54ENV SPACY_MAX_SENTENCE_LENGTH="500"
55ENV SPACY_N_PROCESS="10"
56ENV SPACY_BATCH_SIZE="2000"
57ENV SPACY_CHUNK_SIZE="20000"
58
59WORKDIR /app
60RUN mkdir -p "/app/logs" "/app/tmp" "/local/models"
61
62# Set temp directories to use app directory instead of system /tmp
63ENV TMPDIR="/app/tmp"
64ENV TEMP="/app/tmp"
65ENV TMP="/app/tmp"
66
67# Make entrypoint executable
68RUN chmod +x /docker-entrypoint.sh
69
70# Define the entry point
71ENTRYPOINT ["/docker-entrypoint.sh"]