File size: 2,050 Bytes
94961c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
552f368
 
 
94961c3
 
 
 
 
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
# Hugging Face Spaces β€” Docker SDK
# Docs: https://huggingface.co/docs/hub/spaces-sdks-docker

FROM python:3.12-slim

# ── HF Spaces: non-root user with uid 1000 ────────────────────────────────────
RUN useradd -m -u 1000 appuser

# ── Install uv ────────────────────────────────────────────────────────────────
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /usr/local/bin/

# ── Working directory ─────────────────────────────────────────────────────────
WORKDIR /app

# ── Copy dependency manifests first (layer-cache friendly) ───────────────────
COPY pyproject.toml uv.lock ./

# ── Install dependencies ──────────────────────────────────────────────────────
RUN uv sync --frozen --no-install-project --no-dev

# ── Copy source ───────────────────────────────────────────────────────────────
COPY app/ ./app/
COPY main.py development.yml ./

# ── Fix ownership then drop privileges ────────────────────────────────────────
RUN chown -R appuser:appuser /app
USER appuser

ENV HOME=/home/appuser \
    PATH=/home/appuser/.local/bin:$PATH \
    PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1 \
    HOST=0.0.0.0 \
    PORT=7860

# ── HF Spaces requires port 7860 ──────────────────────────────────────────────
EXPOSE 7860

CMD ["uv", "run", "main.py"]