|
|
|
|
|
|
|
|
| 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 . /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
|
|
|
|
|
| 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/*
|
|
|
|
|
| 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"]
|
| |