# -----------------------
# Base image
# -----------------------
FROM node:18-alpine AS base
WORKDIR /app

# -----------------------
# Install dependencies
# -----------------------
FROM base AS deps
WORKDIR /deps

COPY package*.json ./
RUN npm ci

# -----------------------
# Build stage
# -----------------------
FROM base AS builder
WORKDIR /build

COPY . .

# copy deps only (faster + deterministic)
COPY --from=deps /deps/node_modules ./node_modules

RUN npm run build

# -----------------------
# Production runtime
# -----------------------
FROM node:18-alpine AS runner

WORKDIR /app

# create non-root user
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

# only copy what is needed at runtime
COPY --from=builder /build/.output ./.output
COPY package*.json ./

USER appuser

ENV NODE_ENV=production
EXPOSE 3000

CMD ["node", ".output/server/index.mjs"]