Skip to content

v1.0.0 — Production-ready PHP base images

Choose a tag to compare

@sylvesterdamgaard sylvesterdamgaard released this 04 Sep 22:22
· 95 commits to main since this release

First public release of Cbox PHP Base Images (MIT).

Production-ready PHP containers for Debian 12 (Bookworm), published to ghcr.io/cboxdk/php-baseimages/: php-fpm, php-cli, nginx, and the multi-service php-fpm-nginx — each in four tiers (slim / standard / chromium / dev) with root and rootless variants, for PHP 8.2–8.5, linux/amd64 + linux/arm64. Rolling tags are rebuilt weekly with upstream security patches; immutable SHA tags are published alongside.

Highlights

  • Cbox Init 3.1.2 as PID 1 — DAG-based multi-process supervision, TCP/HTTP/exec health checks, supervisor-owned readiness (/tmp/cbox-ready, /readyz//livez), Prometheus metrics,management API (loopback + Unix socket by default), full init signal plane (SIGHUP reload, USR1/USR2 forwarding), graceful shutdown and zombie reaping.
  • Runtime PHP-FPM tuning (fpm-tune) — measures live per-worker memory (PSS) and resizes the pool via an atomic drop-in + graceful reload; master PID unchanged, zero dropped connections verified under saturated load. Opt-in via CBOX_FPM_TUNE=true. Boot-time profile sizing seeds the pool and clamps safely on small containers (PHP_FPM_AUTOTUNE_STRICT=1 for fail-hard).
  • Warmup hooks via env vars — CBOX_INIT_HOOK_PRE_START_<N>_* runs supervised pre-flight work (Statamic stache warm, Symfony cache warmup, migrations) before health checks pass.
  • Framework auto-detection — Laravel (scheduler, Horizon, Reverb, queues, autoscaler), Symfony, WordPress; permissions fixed automatically.
  • Hardened nginx — Brotli + gzip (incl. pre-compressed .br/.gz from disk), headers-more (NGINX_SERVER_HEADER), privacy-aware access-log formats (combined_no_query, json), security headers, TLS-proxy/PROXY-protocol awareness, mTLS support.
  • 40+ PHP extensions baked in via a single source of truth (php-base), Composer, Node.js/Bun on standard+.

Notes for upgraders from pre-release rolling tags

  • The management API now binds loopback-only by default — set CBOX_INIT_API_HOST=0.0.0.0 and CBOX_INIT_API_AUTH to reach a published port 9180.
  • cbox-init's REST log endpoints renamed fields to match the SSE stream (timestamp, process, instance).
  • A boot crash-loop for containers under ~512MB (fixed default profile not fitting the memory limit) is fixed as of these images.

Full details in docs/changelog.md and the docs under /docs.