# syntax=docker/dockerfile:1

# ---- Build stage ----
FROM node:22-alpine AS build
WORKDIR /app

# Install dependencies against the lockfile for reproducible builds
COPY package.json package-lock.json ./
RUN npm ci

# Build the Vite app (outputs to /app/dist)
COPY . .
RUN npm run build

# ---- Runtime stage ----
FROM node:22-alpine AS runtime
WORKDIR /app
ENV NODE_ENV=production
ENV PORT=3001

# Only production dependencies are needed to run the Express server
COPY package.json package-lock.json ./
RUN npm ci --omit=dev && npm cache clean --force

# Copy the built static assets and the server
COPY --from=build /app/dist ./dist
COPY server.js ./

# Run as the built-in non-root user
USER node

EXPOSE 3001
CMD ["node", "server.js"]
