# --- Build stage --- FROM node:22-slim AS build WORKDIR /app # Install dependencies first (layer caching) COPY package.json package-lock.json ./ RUN npm ci # Copy source and build COPY . . ENV ASTRO_TELEMETRY_DISABLED=1 RUN npm run build # --- Production stage --- FROM caddy:2-alpine AS production COPY --from=build /app/dist /srv COPY Caddyfile /etc/caddy/Caddyfile EXPOSE 80 HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \ CMD wget -qO- http://127.0.0.1:80/ || exit 1 # --- Dev stage --- FROM node:22-slim AS dev WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci ENV ASTRO_TELEMETRY_DISABLED=1 EXPOSE 4321 CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"]