This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is a Docker Compose PHP development environment that provides a complete LEMP stack with multiple PHP versions support. The project includes Nginx, MariaDB, Mailpit, Adminer, and various PHP versions from 5.6 to 8.4.
make up- Start all containers (docker compose up -d)make upb- Start containers with rebuild (docker compose up -d --build)make stop- Stop all containersmake ps- Show container statusmake logs name=<container>- View logs for specific container (e.g.,make logs name=php-84)
make php- Access PHP shell (auto-detects active PHP container)make exec name=<container>- Execute shell in specific containermake mycli- Access MySQL CLI clientmake mysqltuner mem=<MB>- Run MySQL tuner with memory specificationmake node- Access Node.js shellmake ssl d="<domains>"- Generate SSL certificates with acme.sh
make nlogs- View Nginx logsmake dblogs- View database logsmake nrs- Restart Nginxmake rs name=<container>- Restart specific container
The project supports multiple PHP versions through separate containers:
- PHP-FPM versions: 8.4, 8.3, 8.2, 8.1, 8.0, 7.4
- Apache mod_php versions: 8.1, 7.4, 5.6
Each PHP version has its own directory structure:
docker/php-<version>/- PHP-FPM containersdocker/apache-php-<version>/- Apache mod_php containerstemplates/docker-compose-php-<version>.yml- Docker compose templates
docker/- Container configurations and Dockerfilestemplates/- Docker compose templates for different PHP versionsprojects/- Web project files (mounted to containers)db/data/- MariaDB data persistencedocker/nginx/config/- Nginx virtual host configurationsdocker/nginx/config/templates/- Nginx config templates for different PHP versions
- nginx: Reverse proxy with basic auth (super:demo)
- db: MariaDB database
- mailpit: Email testing interface (port 8025)
- adminer: Database management interface (port 8080)
- php-: PHP-FPM containers
- apache-php-: Apache with mod_php
- Copy
mysql.env.exampletomysql.envand configure database settings - Copy appropriate Nginx config template for your PHP version
- Add domains to
/etc/hosts(e.g.,127.0.0.1 site.test)
- Copy the appropriate template from
templates/todocker-compose.yml - Copy corresponding Nginx config template
- For Apache: update Apache virtual host config
- Run
make upbto rebuild and start
- PHP settings:
docker/php-<version>/config/php.ini - PHP-FPM settings:
docker/php-<version>/config/www.conf - Nginx virtual hosts:
docker/nginx/config/ - Basic auth:
docker/nginx/.htpasswd - User/group mapping: Uncomment and modify ID in Dockerfile
- 80: HTTP (Nginx)
- 443: HTTPS (disabled by default)
- 8025: Mailpit interface
- 8080: Adminer database interface