Veltraxor_1 / Dockerfile
ConorWang's picture
Upload 36 files
6536df9 verified
# =========================
# 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"]