FROM node:23-slim AS base

ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable

WORKDIR /app
COPY . .

FROM base AS prod-deps

RUN --mount=type=cache,id=pnpm,target=/pnpm/store --mount=type=secret,id=npmrc,target=/root/.npmrc pnpm install --prod --frozen-lockfile

FROM base AS build

RUN --mount=type=cache,id=pnpm,target=/pnpm/store --mount=type=secret,id=npmrc,target=/root/.npmrc pnpm install --frozen-lockfile
RUN pnpm run build

FROM base

COPY --from=prod-deps /app/node_modules /app/node_modules
COPY --from=build /app/build /app/build

EXPOSE 3000

ENV NODE_ENV=production

CMD [ "node", "build" ]
