# syntax=docker/dockerfile:1.6
ARG NODE_VERSION=24.18.0-alpine
FROM node:${NODE_VERSION} as builder

WORKDIR /usr/src/app

COPY package*.json ./
COPY . .

RUN set -eux; \
  if [ "{{ package_manager }}" = "pnpm" ]; then \
    corepack enable pnpm && pnpm install --frozen-lockfile; \
    pnpm build; \
  elif [ "{{ package_manager }}" = "yarn" ]; then \
    corepack enable yarn && yarn install --frozen-lockfile; \
    yarn build; \
  else \
    if [ -f package-lock.json ]; then npm ci; else npm install; fi; \
    npm run build; \
  fi

FROM node:${NODE_VERSION}
ENV NODE_ENV=production
WORKDIR /usr/src/app

COPY package*.json ./

RUN set -eux; \
  if [ "{{ package_manager }}" = "pnpm" ]; then \
    corepack enable pnpm && pnpm install --prod --frozen-lockfile; \
  elif [ "{{ package_manager }}" = "yarn" ]; then \
    corepack enable yarn && yarn install --production --frozen-lockfile; \
  else \
    if [ -f package-lock.json ]; then npm ci --omit=dev; else npm install --omit=dev; fi; \
  fi

COPY --from=builder /usr/src/app/dist ./dist


EXPOSE 8000
CMD ["node", "dist/main"]
