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.4-bookworm-slim Slim ~100 MiB
php-cli:8.4-bookworm Standard ~230 MiB
php-cli:8.3-bookworm-slim Slim ~100 MiB
php-cli:8.3-bookworm Standard ~230 MiB
php-cli:8.2-bookworm-slim Slim ~100 MiB
php-cli:8.2-bookworm Standard ~230 MiB

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, 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