rs-uv3a/Dockerfile
Ryan Malloy 162d485c31 Add Docker infrastructure with caddy-docker-proxy
Multi-stage Dockerfile (node build → caddy:2-alpine production, node dev).
Compose base + dev override for prod/dev switching via .env ENVIRONMENT flag.
Makefile targets: build, up, down, restart, logs, dev, prod, clean, rebuild.
Caddyfile serves static Astro output with caching and compression.
2026-01-28 14:07:02 -07:00

39 lines
703 B
Docker

# --- 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"]