Files
zeekayandHanzo Dev 8a711a09ce fix(oss): ship badge.svg — the README snippet pointed at a 404
The detail page tells maintainers to paste a 'Deploy on Hanzo' badge into their
README, but the Dockerfile's COPY list is explicit and badge.svg was not on it.
The asset 404'd, so every README that adopted the snippet would render a broken
image. It ships with the page that advertises it.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-26 20:37:51 -07:00

34 lines
1.7 KiB
Docker

# templates.hanzo.ai — the Hanzo PaaS one-click deploy-template catalog, served
# by the house static server (ghcr.io/hanzoai/static, a Go binary on scratch),
# NOT nginx. hanzoai/platform (a Dokploy fork) reads this catalog over HTTP:
#
# GET /meta.json -> JSON ARRAY of template metadata
# GET /blueprints/<id>/template.toml -> TOML config (parsed with `toml`)
# GET /blueprints/<id>/docker-compose.yml -> the compose stack
# GET /blueprints/<id>/<logo> -> the app logo asset
#
# static stamps `Access-Control-Allow-Origin: *` on every response, so the
# platform (platform.hanzo.ai) can fetch the catalog from any origin. We do NOT
# pass `-spa`: a request for a missing blueprint MUST return 404, never fall
# through to an index page (that would corrupt the platform's parse path).
#
# Built on Hanzo's own arc pool (hanzo-build-linux-amd64), never on a laptop,
# and only from ghcr.io (no Docker Hub pull, so no registry-1.docker.io flake).
FROM ghcr.io/hanzoai/static:0.4.1
# The catalog: the aggregated array + every blueprint's files + logos. Only
# these are served — the build scripts, Dockerfile and docs stay out of /public.
COPY meta.json /public/meta.json
COPY blueprints /public/blueprints
COPY index.html /public/index.html
COPY catalog.css /public/catalog.css
COPY app.js /public/app.js
# badge.svg is the "Deploy on Hanzo" mark the per-app page tells maintainers to
# paste into their README. The COPY list here is explicit, so a new asset that is
# not added is silently a 404 — which makes every README that adopted the snippet
# render a broken image. It ships with the page that advertises it.
COPY badge.svg /public/badge.svg
EXPOSE 3000
ENTRYPOINT ["/static", "-port", "3000", "-root", "/public"]