# Produkční image. Záměrně BEZ Next `standalone` outputu: image je o pár set
# MB větší, ale Payload CLI (migrace) v něm funguje bez ladění file-tracingu.
# Na tento objem provozu je to správný kompromis.
FROM node:22-alpine AS base
# `corepack enable` jen vytvoří shim; bez `prepare` by si kontejner stahoval
# pnpm z npmjs.com až při startu — a bez internetu by vůbec nenaběhl.
RUN corepack enable && corepack prepare pnpm@11.18.0 --activate
WORKDIR /app

# --- závislosti (cache se zahodí jen při změně manifestů) ---
FROM base AS deps
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
RUN pnpm install --frozen-lockfile

# --- build ---
FROM base AS build
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
# Build jen sestavuje, do databáze nesahá — placeholder stačí a zadává se
# inline, aby nezůstal v ENV vrstvě image.
RUN PAYLOAD_SECRET=build-time-placeholder-nahrazen-za-behu pnpm build

# --- runtime ---
FROM base AS runtime
ENV NODE_ENV=production \
    NEXT_TELEMETRY_DISABLED=1
# sqlite jen kvůli zálohám (`.dump`), ~1,5 MB
RUN apk add --no-cache sqlite
COPY --from=build /app ./
RUN mkdir -p /app/data /app/media
EXPOSE 3000

HEALTHCHECK --interval=30s --timeout=3s --start-period=30s --retries=3 \
    CMD wget -qO- http://127.0.0.1:3000/api/health || exit 1

# Migrace proběhnou při startu, teprve pak naskočí server.
CMD ["sh", "-c", "pnpm payload migrate && pnpm start"]
