# Stage 1: Build static site FROM node:22-slim AS builder WORKDIR /app COPY package.json package-lock.json* ./ RUN npm ci COPY . . RUN npm run build # Stage 2: Production — serve static dist via Caddy FROM caddy:2-alpine AS prod COPY Caddyfile /etc/caddy/Caddyfile COPY --from=builder /app/dist /srv EXPOSE 80 # Stage 3: Development — Node with HMR FROM node:22-slim AS dev WORKDIR /app COPY package.json package-lock.json* ./ RUN npm ci COPY . . EXPOSE 4321 CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"]