# Multi-stage lightweight build for pengzhan.dev skeleton
FROM node:22-alpine AS dependencies
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev

FROM node:22-alpine AS runner
WORKDIR /app

ENV NODE_ENV=production
ENV PORT=3000

# Copy node_modules from dependencies stage
COPY --from=dependencies /app/node_modules ./node_modules
COPY package*.json ./

# Copy skeleton web framework code
COPY server/ ./server/
COPY views/ ./views/
COPY public/ ./public/

# Persistent Volume mount point
VOLUME /app/content

EXPOSE 3000

USER node

CMD ["node", "server/index.js"]
