# ─────────────────────────────────────────────
# Stage 1: Build
# ─────────────────────────────────────────────
FROM node:22-alpine AS builder
WORKDIR /app

# Erst nur package*.json – besseres Layer-Caching
COPY package*.json ./
# prepare läuft svelte-kit sync (|| true → unkritisch wenn Config fehlt)
RUN npm ci

COPY . .
RUN npm run build

# ─────────────────────────────────────────────
# Stage 2: Schlankes Production-Image
# ─────────────────────────────────────────────
FROM node:22-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production

# Nur Production-Deps, kein postinstall nötig
COPY package*.json ./
RUN npm ci --omit=dev --ignore-scripts

# Build-Artefakt aus Stage 1
COPY --from=builder /app/build ./build

# Non-root user
RUN addgroup -g 1001 -S nodejs \
 && adduser -S svelte -u 1001 -G nodejs \
 && chown -R svelte:nodejs /app
USER svelte

EXPOSE 3001
ENV PORT=3001

HEALTHCHECK --interval=5s --timeout=3s --start-period=15s --retries=3 \
  CMD wget -qO- http://127.0.0.1:3001/ > /dev/null || exit 1

CMD ["node", "build"]
