# syntax=docker/dockerfile:1

# ============================================
# Base stage -- Node 22 slim
# ============================================
FROM node:22-slim AS base

WORKDIR /app
COPY package.json package-lock.json ./

# ============================================
# Development -- hot reload
# ============================================
FROM base AS dev

RUN npm ci
COPY . .

EXPOSE 4321
CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"]

# ============================================
# Build -- static site generation
# ============================================
FROM base AS build

RUN npm ci
COPY . .

ENV ASTRO_TELEMETRY_DISABLED=1
RUN npm run build

# ============================================
# Production -- Caddy serves static files
# ============================================
FROM caddy:2-alpine AS prod

COPY --from=build /app/dist /usr/share/caddy

RUN printf ':4321 {\n\troot * /usr/share/caddy\n\tencode gzip\n\tfile_server\n}\n' > /etc/caddy/Caddyfile

EXPOSE 4321
CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile"]
