61 lines
1.8 KiB
Docker
61 lines
1.8 KiB
Docker
FROM python:3.11-slim
|
|
|
|
WORKDIR /app
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1
|
|
ENV PYTHONUNBUFFERED=1
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
git \
|
|
openssh-client \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# ZP Wiki je do kontajnera pripájaná ako /zpwiki
|
|
RUN git config --system --add safe.directory /zpwiki
|
|
|
|
# CPU-only PyTorch.
|
|
RUN python -m pip install --no-cache-dir \
|
|
torch==2.11.0 \
|
|
--index-url https://download.pytorch.org/whl/cpu
|
|
|
|
COPY deployment/requirements.txt ./deployment/requirements.txt
|
|
|
|
RUN python -m pip install --no-cache-dir \
|
|
-r deployment/requirements.txt
|
|
|
|
# Prepare immutable assets before application code, so code-only changes do
|
|
# not invalidate model preparation. The preparer only imports its own module.
|
|
COPY tools/__init__.py ./tools/__init__.py
|
|
COPY tools/runtime/__init__.py tools/runtime/runtime_assets.py ./tools/runtime/
|
|
COPY runtime_assets/ /opt/zp-assets/
|
|
|
|
ARG EMBEDDING_MODEL=intfloat/multilingual-e5-small
|
|
ARG EMBEDDING_REVISION=""
|
|
ARG CHUNK_TOKEN_ENCODING=cl100k_base
|
|
ARG RAG_LLM_TOKEN_ENCODING=cl100k_base
|
|
|
|
RUN python -m tools.runtime.runtime_assets prepare --output /opt/zp-assets \
|
|
--model "$EMBEDDING_MODEL" --revision "$EMBEDDING_REVISION" \
|
|
--encoding "$CHUNK_TOKEN_ENCODING" --encoding "$RAG_LLM_TOKEN_ENCODING"
|
|
|
|
# Cross-encoder reranker and Stanza Slovak lemmatizer (pinned, checksummed,
|
|
# probed offline); answering never downloads a model.
|
|
RUN python -m tools.runtime.runtime_assets prepare-extras --output /opt/zp-assets
|
|
|
|
COPY app ./app
|
|
COPY tools ./tools
|
|
|
|
ENV ZP_RUNTIME_ASSETS=/opt/zp-assets
|
|
ENV ZP_ASSETS_REQUIRED=1
|
|
ENV HF_HUB_OFFLINE=1
|
|
ENV TRANSFORMERS_OFFLINE=1
|
|
ENV TIKTOKEN_CACHE_DIR=/opt/zp-assets/tiktoken
|
|
ENV STANZA_RESOURCES_DIR=/opt/zp-assets/stanza
|
|
|
|
RUN mkdir -p data
|
|
|
|
EXPOSE 8000
|
|
|
|
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
|