The four repos
runtime
Container image: Caddy + FrankenPHP + Souin compiled in. Published as
ghcr.io/frankenpress/runtime:php8.3.mu-plugin
Slim must-use plugin (4 components): S3 uploads bootstrap, Souin cache
invalidator, Site Health overrides, opt-in SMTP mailer. Composer-installable;
baked into
runtime by default.site-template
GitHub template repo. Bedrock layout; composer.json with sensible
minimal deps. Builds your site image on
git push --tags.charts
Helm chart
site. Bitnami-style; bundles MariaDB + Redis + MinIO
for instant kind deploys.Request flow
Souin caches GET responses in Redis. Onsave_post,
SouinInvalidator connects directly to Redis and DELs the relevant
keys (Souin’s documented HTTP-level invalidation APIs are broken in
cache-handler v0.16.0 — see
PHASE-0.md
for the investigation).
Image promotion
Each tag produces an immutable site image (WP core + plugins + your custom code baked in). Promoting between environments is a singlehelm upgrade with a different image tag — no separate code-vs-config
to track.
This composes cleanly with image-promotion tooling like
Kargo or
Argo Rollouts but doesn’t
mandate them. The chart renders a plain Deployment; consumers wrap
with whatever orchestration they prefer.
What stays out
- No WooCommerce / Yoast / theme picks in
site-template. Add what you need viacomposer require wpackagist-plugin/<slug>. - No GitOps controller. The chart renders k8s primitives; you bring your own Argo CD / Flux / Kargo.
- No multi-cluster federation. One namespace = one site (use multiple Helm releases for multiple sites in one cluster).
- No admin-installable plugins/themes/core updates. The image is the source of truth; the lockdown is hard-coded.
Production swap matrix
| Default (dev / kind) | Production |
|---|---|
bitnami/mariadb subchart | MariaDB Operator |
bitnami/redis subchart | DragonflyDB Operator (same RESP protocol, dramatically better single-node throughput) |
bitnami/minio subchart | AWS S3 / Cloudflare R2 / GCS XML |
| auto-generated WP keys+salts | External Secrets Operator → cloud secret manager |