FROM node:22-alpine AS base

WORKDIR /app

RUN apk add --no-cache openssl

FROM base AS dependencies

COPY package*.json ./

RUN npm ci

FROM dependencies AS builder

COPY . .

ARG BUILD_COMMAND="npm run build"

RUN sh -c "$BUILD_COMMAND"

FROM base AS production-dependencies

COPY package*.json ./

RUN npm ci --omit=dev && npm cache clean --force

FROM base AS runner

WORKDIR /app

USER node

COPY --from=production-dependencies --chown=node:node /app/node_modules ./node_modules
COPY --from=builder --chown=node:node /app/node_modules/.prisma ./node_modules/.prisma

COPY --from=builder --chown=node:node /app/dist ./dist

COPY --chown=node:node package*.json ./

CMD ["node", "dist/src/server.js"]