# Tambi — Hugging Face Docker Space # Copy this file to the Space repo root (next to package.json). FROM node:22-alpine AS builder WORKDIR /app # Prisma schema must exist before npm ci (postinstall runs `prisma generate`) COPY package.json package-lock.json prisma.config.ts .npmrc ./ COPY prisma ./prisma RUN npm ci COPY . . # Build-time placeholder — env.ts validates this as a URL during `next build`. # The real value is injected at runtime via HF Space secrets. ARG DATABASE_URL=postgresql://placeholder:placeholder@localhost:5432/placeholder ENV DATABASE_URL=$DATABASE_URL \ NODE_ENV=production RUN npm run build FROM node:22-alpine AS runner WORKDIR /app ENV NODE_ENV=production # HF Spaces run best as a non-root user (uid 1000) — node:alpine ships one: "node" COPY --from=builder --chown=node:node /app . USER node EXPOSE 3000 CMD ["npx", "next", "start", "-H", "0.0.0.0", "-p", "3000"]