# -------------------------------------------------------------------------- # 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"]