Files
papers/site/Dockerfile
zeekay cd66a2e011 chore(static): pin the ONE canonical hanzoai/static v0.5.1
One server, one version, one tag spelling. v0.5.1 is the only tag carrying
79ac4f9 (serve directory index in place), so stale pins served a DIFFERENT
URL contract: docs.hanzo.ai still 301s /x/ -> /x/index.html while every
v0.5.1 host does not. Also 0.5.1 (yadota) was never published as a tag, and
the -amd64 suffix leaked an architecture (a place) into a version (a value).
2026-07-25 10:41:48 -07:00

19 lines
806 B
Docker

# papers.hanzo.ai — Next.js static export served by hanzoai/static.
#
# Built on Hanzo's own hardware (platform.hanzo.ai → arcd / in-cluster kaniko),
# never on GitHub builders. Multi-stage: produce the static export, then bake it
# into the scratch-based hanzoai/static image at /public. The image IS the site.
FROM node:20-alpine AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
ENV NEXT_PUBLIC_BRAND=hanzo
RUN npm run build # next.config.mjs: output:'export' → writes ./out
# hanzoai/static: FROM scratch, ENTRYPOINT ["/static"], serves -root (default
# /public) on -port (set by the operator Service CR args). Pinned to the tag the
# cluster already runs (see universe crs/cdn.yaml).
FROM ghcr.io/hanzoai/static:v0.5.1
COPY --from=build /app/out /public