Files
zeekayandHanzo Dev 3c4ae47b63 feat: canonical Node 24 base image with sqlite3 bundled
Node 24.18.0 (LTS Krypton) on alpine. sqlite3 bundled two ways, both
proven at build time: require('node:sqlite') builtin works, and native
better-sqlite3/sqlite3 compile against build-base+python3+sqlite-dev via
node-gyp. One base, one way: services do FROM ghcr.io/hanzoai/nodejs:v24.18.0.

Self-contained CI on hanzo-build-linux-amd64, amd64-only, semver-only
(vX.Y.Z + :v24), never sha/latest.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-04 12:32:29 -07:00

34 lines
1.5 KiB
Markdown

# LLM.md — hanzoai/nodejs
Canonical Node base image for the whole Hanzo Node fleet. One base, one way.
## What this is
`FROM node:24.18.0-alpine` + the sqlite3 toolchain, published as
`ghcr.io/hanzoai/nodejs:v24.18.0` (+ `:v24`). Every Hanzo Node service does
`FROM ghcr.io/hanzoai/nodejs:v24.18.0` so Node 24 and sqlite3 are uniform.
## sqlite3, two ways (both build-gated)
- `require('node:sqlite')` (builtin `DatabaseSync`, stable Node ≥22.5) — no deps.
- `better-sqlite3` / `sqlite3` compile via node-gyp against `build-base` +
`python3` + `sqlite-dev`. The Dockerfile compiles better-sqlite3 at build time
and round-trips it; the image fails to build if that breaks.
## Why alpine
Majority of Hanzo Node services already use `node:*-alpine`. better-sqlite3
compiles cleanly on musl with `build-base`; `node:sqlite` is builtin regardless.
`libc6-compat` lets prebuilt glibc addons load. Debian-slim consumers
(paas, platform, base-studio, market, embeddings, store-api, insights, gallery)
need an `apt-get`→`apk` port before switching to this base — tracked as the sweep tail.
## Release / bump
1. Edit the `FROM node:<X.Y.Z>-alpine` pin in `Dockerfile` to move the runtime.
2. Tag `vX.Y.Z` (must equal the Node version). CI publishes `:vX.Y.Z` + `:vX`.
3. Consumers bump their `FROM ghcr.io/hanzoai/nodejs:vX.Y.Z` pin on their own release.
CI: `.github/workflows/build.yml`, self-contained, routes to `hanzo-build-linux-amd64`.
amd64-only (DOKS has no arm64). Semver only, never sha/latest.