# syntax=docker/dockerfile:1

FROM node:22-bookworm-slim AS base

ENV NEXT_TELEMETRY_DISABLED=1 \
    PNPM_HOME=/pnpm \
    PATH=/pnpm:$PATH

WORKDIR /app

RUN corepack enable && corepack prepare pnpm@10 --activate

FROM base AS deps

COPY package.json pnpm-lock.yaml .npmrc ./
RUN pnpm install --frozen-lockfile

FROM deps AS build

ARG NEXT_PUBLIC_SERVER_URL=http://localhost:3000
ARG __NEXT_PRIVATE_ORIGIN=http://localhost:3000

ENV NODE_ENV=production \
    NEXT_PUBLIC_SERVER_URL=$NEXT_PUBLIC_SERVER_URL \
    __NEXT_PRIVATE_ORIGIN=$__NEXT_PRIVATE_ORIGIN \
    DATABASE_URL=file:/app/shared/content.db \
    PAYLOAD_SECRET=build-time-placeholder \
    CRON_SECRET=build-time-placeholder \
    PREVIEW_SECRET=build-time-placeholder

COPY . .

RUN pnpm build
RUN pnpm prune --prod

FROM base AS runner

ENV NODE_ENV=production \
    HOSTNAME=0.0.0.0 \
    PORT=3000

COPY --from=build /app /app

RUN mkdir -p /app/shared /app/public/media

EXPOSE 3000

CMD ["pnpm", "start"]
