# ========================= # Veltraxor API - Dockerfile # ========================= ARG PYTHON_VERSION=3.11 FROM python:${PYTHON_VERSION}-slim AS builder ENV PIP_NO_CACHE_DIR=1 \ PYTHONDONTWRITEBYTECODE=1 \ DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential gcc git curl \ && rm -rf /var/lib/apt/lists/* WORKDIR /build # Copy the whole context to detect optional requirement files robustly COPY . /build RUN set -eux; \ python -m pip install --upgrade pip wheel setuptools; \ if [ -f /build/requirements.txt ]; then \ python -m pip install -r /build/requirements.txt; \ elif ls /build/requirements*.txt >/dev/null 2>&1; then \ for f in /build/requirements*.txt; do python -m pip install -r "$f"; done; \ else \ python -m pip install \ fastapi \ "uvicorn[standard]" \ gunicorn \ pydantic \ httpx \ python-dotenv \ pyyaml \ huggingface_hub[cli] \ transformers \ tiktoken \ hf_transfer \ orjson; \ fi # ---- Runtime stage ---- FROM python:${PYTHON_VERSION}-slim AS runtime ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ HF_HOME=/data/hf_cache \ MODEL_LOCAL_DIR=/data/hf_cache/Veltraxor_1 \ LOG_LEVEL=INFO \ REQUEST_TIMEOUT_S=45 \ BACKEND_STEP_TIMEOUT_S=30 \ MAX_CONCURRENCY=8 \ RATE_LIMIT_QPS=3 \ BURST_CAPACITY=3 \ RATE_LIMIT_SCOPE=route_token \ ENGINE_KIND=dry \ MODEL_ALIAS=veltraxor-1 \ HF_REPO_ID=Veltraxor/Veltraxor_1 \ EXPECTED_SHARDS=163 \ HF_HUB_ENABLE_HF_TRANSFER=1 RUN apt-get update && apt-get install -y --no-install-recommends \ curl ca-certificates \ && rm -rf /var/lib/apt/lists/* # Bring installed packages from builder COPY --from=builder /usr/local /usr/local WORKDIR /app COPY . /app RUN useradd -m -u 10001 -s /bin/bash appuser \ && mkdir -p /app/logs ${HF_HOME} ${MODEL_LOCAL_DIR} \ && chown -R appuser:appuser /app ${HF_HOME} USER appuser EXPOSE 8000 HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \ CMD curl -fsS http://127.0.0.1:8000/healthz || exit 1 ENV UVICORN_WORKERS=2 CMD ["bash","-lc","gunicorn -k uvicorn.workers.UvicornWorker -w ${UVICORN_WORKERS:-2} -b 0.0.0.0:8000 backend.veltraxor_api_server:app"]