# ---------- deps: install workspace dependencies (keeps patchedDependencies) ---------- FROM node:22.23.2-bookworm AS deps WORKDIR /app ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 RUN corepack enable && corepack prepare pnpm@11.24.0 --activate COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY patches ./patches RUN pnpm install --frozen-lockfile # ---------- builder: build the standalone Next.js output ---------- FROM node:22.23.2-bookworm AS builder WORKDIR /app ENV NEXT_TELEMETRY_DISABLED=1 \ COREPACK_ENABLE_DOWNLOAD_PROMPT=0 RUN corepack enable && corepack prepare pnpm@11.24.0 --activate COPY --from=deps /app/node_modules ./node_modules COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY patches ./patches COPY . . RUN pnpm run build # ---------- runner: minimal runtime with standalone server ---------- FROM node:22.23.2-bookworm AS runner WORKDIR /app ENV NODE_ENV=production \ NEXT_TELEMETRY_DISABLED=1 \ PORT=3000 \ HOSTNAME=0.0.0.0 COPY --from=builder --chown=node:node /app/public ./public RUN mkdir .next && chown node:node .next COPY --from=builder --chown=node:node /app/.next/standalone ./ COPY --from=builder --chown=node:node /app/.next/static ./.next/static USER node EXPOSE 3000 CMD ["node", "server.js"]