File size: 1,243 Bytes
178abc4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# --------------------------------------------------------------------------
# CodeCraftLab — Dockerfile
# FastAPI + Uvicorn on port 8000
# Runs as non-root user (HF Spaces requirement)
# --------------------------------------------------------------------------
FROM python:3.11-slim AS base

# System deps
RUN apt-get update && apt-get install -y --no-install-recommends \
    git \
    git-lfs \
    build-essential \
    && git lfs install \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Non-root user (required by HuggingFace Spaces)
RUN useradd -m -u 1000 appuser
WORKDIR /app

# --------------------------------------------------------------------------
FROM base AS deps

COPY pyproject.toml uv.lock* ./
RUN pip install uv --no-cache-dir && \
    uv sync --no-dev --frozen

# --------------------------------------------------------------------------
FROM base AS runtime

COPY --from=deps /app/.venv /app/.venv
ENV PATH="/app/.venv/bin:$PATH"

COPY --chown=appuser:appuser . .

USER appuser

EXPOSE 8000

# Uvicorn — 4 workers in production, 1 in development (override with env)
CMD ["uvicorn", "app:app", \
     "--host", "0.0.0.0", \
     "--port", "8000", \
     "--workers", "4", \
     "--log-config", "null"]