Skip to content

Choosing Your Image

Image Size Matrix

php-fpm-nginx (multi-service)

Tag Tier Size
php-fpm-nginx:8.5-bookworm-slim Slim ~120 MiB
php-fpm-nginx:8.5-bookworm Standard ~250 MiB
php-fpm-nginx:8.5-bookworm-chromium Chromium ~700 MiB
php-fpm-nginx:8.4-bookworm-slim Slim ~120 MiB
php-fpm-nginx:8.4-bookworm Standard ~250 MiB
php-fpm-nginx:8.4-bookworm-chromium Chromium ~700 MiB
php-fpm-nginx:8.3-bookworm-slim Slim ~120 MiB
php-fpm-nginx:8.3-bookworm Standard ~250 MiB
php-fpm-nginx:8.3-bookworm-chromium Chromium ~700 MiB
php-fpm-nginx:8.2-bookworm-slim Slim ~120 MiB
php-fpm-nginx:8.2-bookworm Standard ~250 MiB
php-fpm-nginx:8.2-bookworm-chromium Chromium ~700 MiB

All tags also have -rootless and -dev variants (append the suffix).

php-fpm (single-service)

Tag Tier Size
php-fpm:8.5-bookworm-slim Slim ~100 MiB
php-fpm:8.5-bookworm Standard ~230 MiB
php-fpm:8.4-bookworm-slim Slim ~100 MiB
php-fpm:8.4-bookworm Standard ~230 MiB
php-fpm:8.3-bookworm-slim Slim ~100 MiB
php-fpm:8.3-bookworm Standard ~230 MiB
php-fpm:8.2-bookworm-slim Slim ~100 MiB
php-fpm:8.2-bookworm Standard ~230 MiB

php-cli (single-service)

Tag Tier Size
php-cli:8.5-bookworm-slim Slim ~100 MiB
php-cli:8.5-bookworm Standard ~230 MiB
php-cli:8.5-bookworm-chromium Chromium ~680 MiB
php-cli:8.5-bookworm-dev Dev ~700 MiB
php-cli:8.4-bookworm-slim Slim ~100 MiB
php-cli:8.4-bookworm Standard ~230 MiB
php-cli:8.4-bookworm-chromium Chromium ~680 MiB
php-cli:8.4-bookworm-dev Dev ~700 MiB
php-cli:8.3-bookworm-slim Slim ~100 MiB
php-cli:8.3-bookworm Standard ~230 MiB
php-cli:8.3-bookworm-chromium Chromium ~680 MiB
php-cli:8.3-bookworm-dev Dev ~700 MiB
php-cli:8.2-bookworm-slim Slim ~100 MiB
php-cli:8.2-bookworm Standard ~230 MiB
php-cli:8.2-bookworm-chromium Chromium ~680 MiB
php-cli:8.2-bookworm-dev Dev ~700 MiB

All tags also have -rootless variants (append the suffix).

php-cli with Cbox Init: Use php-cli for background workloads (queue workers, schedulers, Horizon). Set LARAVEL_QUEUE=true or similar env vars and the entrypoint automatically starts Cbox Init with structured logging, metrics, and health checks. See Queue Workers Guide.

All images are prefixed with ghcr.io/cboxdk/php-baseimages/.

Tiers

Slim (-slim) -- Core PHP extensions (opcache, pdo_mysql, pdo_pgsql, redis, apcu, msgpack, intl, bcmath, gd with WebP, zip, pcntl, sockets) plus Composer and Cbox Init. Best for APIs, microservices, and CI pipelines where image size matters.

Standard (no suffix, default) -- Everything in Slim plus ImageMagick, libvips, GD with AVIF, Node.js 22 (with npm/npx), Bun, mongodb, soap, ldap, xsl, calendar, gettext, sysv IPC, exiftool, ghostscript, and librsvg. The right choice for most Laravel, Symfony, and WordPress applications.

Chromium (-chromium) -- Everything in Standard plus Chromium, Puppeteer environment, NSS, HarfBuzz, and fonts. Required for Browsershot, Laravel Dusk, Puppeteer, and PDF generation via headless browser.

Dev (-dev) -- Chromium tier with Xdebug, PCOV, and SPX pre-installed. Use for local development and CI test runs. Never use in production.

Root vs Rootless

Variant Runs as Tag example
Root (default) root at start, drops to www-data 8.4-bookworm
Rootless www-data from start 8.4-bookworm-rootless

Rootless variants append -rootless to any tag: 8.4-bookworm-slim-rootless, 8.4-bookworm-chromium-rootless, etc.

Use rootless when:

  • Kubernetes with runAsNonRoot: true security policies
  • OpenShift (requires non-root by default)
  • CIS benchmark compliance

Use root (default) when:

  • Docker Compose on a single server
  • You need to bind to port 80 directly
  • No specific rootless requirement

Single-Service vs Multi-Service

Aspect Multi-service (php-fpm-nginx) Single-service (php-fpm + nginx)
Containers 1 2
Setup Simpler More config
Scaling Together Independent
Failure isolation Shared Independent
Best for Docker Compose, small/medium apps Kubernetes, independent scaling

Use multi-service (php-fpm-nginx) for most projects. It runs PHP-FPM and Nginx in one container managed by Cbox Init, with framework auto-detection, health checks, and graceful shutdown built in.

Use single-service (php-fpm + nginx) when you need to scale PHP-FPM and Nginx independently, or when your orchestrator (Kubernetes, Nomad) expects one process per container.

# Multi-service (recommended for most projects)
services:
  app:
    image: ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.4-bookworm
    ports:
      - "80:80"

# Single-service (Kubernetes / independent scaling)
services:
  php:
    image: ghcr.io/cboxdk/php-baseimages/php-fpm:8.4-bookworm
  nginx:
    image: ghcr.io/cboxdk/php-baseimages/nginx:bookworm
    ports:
      - "80:80"
    depends_on:
      - php

Next Steps