# ---- Builder stage: Next.js static export ---- FROM node:22-slim AS builder WORKDIR /build RUN npm install -g pnpm@10 # Build essentials (native deps like sharp need g++) RUN apt-get update -qq && apt-get install -y -qq --no-install-recommends \ make g++ \ && rm -rf /var/lib/apt/lists/* # Copy source + manifests COPY services/frontend/ ./ # Install all deps RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store \ pnpm install --no-frozen-lockfile # Build static export RUN pnpm run build # ---- Runtime stage: nginx ---- FROM nginx:alpine COPY infra/docker/nginx/nginx.conf /etc/nginx/conf.d/default.conf COPY --from=builder /build/out/ /usr/share/nginx/html/ EXPOSE 80 HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \ CMD wget -qO- http://localhost:80/ || exit 1 CMD ["nginx", "-g", "daemon off;"]