FP_POC / Dockerfile
github-actions[bot]
Space-Deploy aus GitHub main
9de795a
Raw History Blame Contribute Delete
1.7 kB
# Hugging-Face-Space `Bryan-HSLU/FP_POC` (Docker-SDK, CPU, Port 7860).
#
# Multi-Stage, weil Frontend-Build (Node/pnpm) und Engines-Laufzeit (Python/uv)
# unterschiedliche Toolchains brauchen; nur das Build-Ergebnis (apps/web/dist)
# wandert in das schlanke Python-Image. Die Repo-Struktur bleibt im Image
# erhalten (/repo/apps/web/dist, /repo/data, /repo/packages/shared,
# /repo/services/engines), weil die Engines Stammdaten und Schemas zur
# Laufzeit über REPO_ROOT relativ zu ihrer eigenen Datei lesen (siehe
# services/engines/src/fp_engines/api.py bzw. space.py).
# --- Stage 1: Frontend bauen -------------------------------------------------
FROM node:22-alpine AS webbuild
RUN corepack enable
WORKDIR /repo
COPY . .
RUN pnpm install --frozen-lockfile && pnpm --filter @fp/web build
# --- Stage 2: Engines-Laufzeit + gebautes Frontend --------------------------
FROM python:3.12-slim
COPY --from=ghcr.io/astral-sh/uv:0.5.11 /uv /uvx /usr/local/bin/
RUN useradd --create-home --uid 1000 user
WORKDIR /repo
COPY . .
COPY --from=webbuild /repo/apps/web/dist ./apps/web/dist
RUN chown -R user:user /repo
USER user
ENV UV_CACHE_DIR=/tmp/uv-cache
RUN uv --project services/engines sync --frozen --no-dev
EXPOSE 7860
# WICHTIG: --no-sync + --frozen, damit `uv run` beim CONTAINERSTART die beim Build
# fertig installierte Umgebung NICHT neu auflöst (kein Netzwerk/Index-Zugriff).
# Ohne das versucht uv run bei jedem Start zu syncen → auf HF flakiger Start
# ("Runtime error"/Startup-Hang). So ist der Start deterministisch und schnell.
CMD ["uv", "--project", "services/engines", "run", "--no-sync", "--frozen", "uvicorn", "fp_engines.space:app", "--host", "0.0.0.0", "--port", "7860"]