Skip to content

Quick Reference

Quick Reference

Copy-paste ready snippets. No configuration needed.

Minimal Setup

# docker-compose.yml
services:
  app:
    image: ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.3-bookworm
    ports:
      - "8000:80"
    volumes:
      - .:/var/www/html
docker compose up
# Open http://localhost:8000

Laravel

services:
  app:
    image: ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.3-bookworm
    ports:
      - "8000:80"
    volumes:
      - .:/var/www/html
    environment:
      - LARAVEL_SCHEDULER=true
    depends_on:
      - mysql
      - redis

  mysql:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: laravel
      MYSQL_USER: laravel
      MYSQL_PASSWORD: secret
    volumes:
      - mysql-data:/var/lib/mysql

  redis:
    image: redis:7-alpine

volumes:
  mysql-data:

.env essentials:

DB_HOST=mysql
REDIS_HOST=redis
REDIS_CLIENT=phpredis

Symfony

services:
  app:
    image: ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.3-bookworm
    ports:
      - "8000:80"
    volumes:
      - .:/var/www/html
    environment:
      - APP_ENV=dev
    depends_on:
      - postgres

  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: symfony
      POSTGRES_USER: symfony
      POSTGRES_PASSWORD: secret
    volumes:
      - postgres-data:/var/lib/postgresql/data

volumes:
  postgres-data:

WordPress

services:
  wordpress:
    image: ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.3-bookworm
    ports:
      - "8000:80"
    volumes:
      - ./wordpress:/var/www/html
    depends_on:
      - mysql

  mysql:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
      MYSQL_DATABASE: wordpress
    volumes:
      - mysql-data:/var/lib/mysql

volumes:
  mysql-data:

Common Environment Variables

PHP Settings

environment:
  - PHP_MEMORY_LIMIT=512M
  - PHP_MAX_EXECUTION_TIME=300
  - PHP_UPLOAD_MAX_FILESIZE=100M
  - PHP_POST_MAX_SIZE=100M

Laravel Features

environment:
  - LARAVEL_SCHEDULER=true      # Enable cron
  - LARAVEL_QUEUE=true          # Enable queue worker
  - LARAVEL_HORIZON=true        # Enable Horizon
  - LARAVEL_REVERB=true         # Enable WebSockets

Development (Xdebug)

environment:
  - XDEBUG_MODE=debug,develop,coverage
  - XDEBUG_CONFIG=client_host=host.docker.internal
  - PHP_IDE_CONFIG=serverName=docker

Production

environment:
  - PHP_OPCACHE_VALIDATE_TIMESTAMPS=0
  - PHP_OPCACHE_MAX_ACCELERATED_FILES=20000

Quick Commands

# Start
docker compose up -d

# Logs
docker compose logs -f

# Shell
docker compose exec app sh

# PHP version
docker compose exec app php -v

# Extensions
docker compose exec app php -m

# Health check
curl localhost:8000/health

# Stop
docker compose down

Laravel Commands

docker compose exec app php artisan key:generate
docker compose exec app php artisan migrate
docker compose exec app php artisan cache:clear
docker compose exec app php artisan config:cache
docker compose exec app php artisan test

Available Images

# Standard tier (DEFAULT)
ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.4-bookworm
ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.3-bookworm
ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.2-bookworm

# Slim tier (APIs, microservices)
ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.4-bookworm-slim

# Full tier (Browsershot, Dusk)
ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.4-bookworm-full

# Development (with Xdebug)
ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.3-bookworm-dev

Included Extensions

All images include 40+ extensions:

bcmath, calendar, ctype, curl, dom, exif, fileinfo, gd, gettext,
iconv, imagick, intl, mbstring, mongodb, mysqli, opcache, pcntl,
pdo_mysql, pdo_pgsql, pgsql, redis, simplexml, soap, sockets,
sodium, tokenizer, xml, xmlreader, xmlwriter, xsl, zip

Verify: docker compose exec app php -m


Add Custom Extension

FROM ghcr.io/cboxdk/php-baseimages/php-fpm-nginx:8.3-bookworm

RUN apt-get update && apt-get install -y --no-install-recommends $PHPIZE_DEPS \
    && pecl install swoole \
    && docker-php-ext-enable swoole \
    && apt-get purge -y $PHPIZE_DEPS \
    && rm -rf /var/lib/apt/lists/*

See Extending Images for more.