Multi-stage Dockerfile: node:22-slim build → caddy:2-alpine serve. caddy-docker-proxy labels for automatic TLS + reverse proxy. Profiles: prod (Caddy static) and dev (Astro HMR with volume mounts).
18 lines
356 B
Docker
18 lines
356 B
Docker
# Stage 1: Install dependencies
|
|
FROM node:22-slim AS deps
|
|
WORKDIR /app
|
|
COPY package.json package-lock.json ./
|
|
RUN npm ci
|
|
|
|
# Stage 2: Build static site
|
|
FROM deps AS build
|
|
COPY . .
|
|
ENV ASTRO_TELEMETRY_DISABLED=1
|
|
RUN npm run build
|
|
|
|
# Stage 3: Serve with Caddy
|
|
FROM caddy:2-alpine
|
|
COPY --from=build /app/dist /srv
|
|
COPY Caddyfile /etc/caddy/Caddyfile
|
|
EXPOSE 80
|