FROM node:24-alpine AS base ENV NODE_ENV=production FROM base AS deps RUN apk add --no-cache libc6-compat WORKDIR /app COPY package.json pnpm-lock.yaml* .npmrc* ./ RUN corepack enable pnpm && pnpm i --frozen-lockfile; FROM base AS builder WORKDIR /app COPY --from=deps /app/node_modules ./node_modules COPY . . RUN corepack enable pnpm && pnpm build FROM base AS runner WORKDIR /app RUN corepack enable pnpm RUN mkdir -p /app/portfolio-data && chown node:node /app/portfolio-data COPY --chown=node --from=deps /app/node_modules ./node_modules COPY --chown=node --from=builder /app/public ./public COPY --chown=node --from=builder /app/next.config.ts ./next.config.ts COPY --chown=node --from=builder /app/.next ./.next COPY --chown=node --from=builder /app/package.json ./package.json COPY --chown=node --from=builder /app/tsconfig.json ./tsconfig.json COPY --chown=node --from=builder /app/src ./src USER node EXPOSE 3000 CMD ["pnpm", "start"]