All checks were successful
Cloud Apache Container / Build-and-Push (74) (push) Successful in 3m12s
Cloud Apache Container / Build-and-Push (80) (push) Successful in 1m37s
Cloud Apache Container / Build-and-Push (81) (push) Successful in 1m54s
Cloud Apache Container / Build-and-Push (82) (push) Successful in 2m23s
Cloud Apache Container / Build-and-Push (83) (push) Successful in 2m8s
Cloud Apache Container / Build-and-Push (84) (push) Successful in 3m21s
3.0 KiB
3.0 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
Cloud Apache Container (CAC) is a Docker-based PHP web hosting environment that supports multiple PHP versions (7.4 through 8.4) with Apache, designed for both local development and production deployment.
Common Development Commands
Local Development Setup
# Quick start with automated setup (creates helper scripts)
./local-dev.sh -n local-dev
# With specific PHP version
./local-dev.sh -n myproject -a 84 # PHP 8.4
# Helper scripts created by local-dev.sh:
./instance_start # Start container
./instance_stop # Stop container
./instance_logs # Tail Apache logs
./instance_db_info # Show MySQL credentials
Building and Testing
# Build container locally
docker build -t cac:latest .
# Build with specific PHP version
docker build --build-arg PHP_VER=83 -t cac:php83 .
# Run container manually
docker run -d -p 80:80 -p 443:443 \
-e PHPVER=83 -e environment=DEV \
-e uid=$(id -u) -e user=$(whoami) -e domain=localhost \
-v"$(pwd)/user":/home/$(whoami) \
--name test-container cac:latest
Server Deployment
- Production git directory:
/root/whp
- After
git pull
, sync web files:rsync -av web-files/ /docker/whp/web/
Architecture and Key Components
Directory Structure
/scripts/
- Container setup scripts (entrypoint, PHP installers, vhost creation)/config/
- Apache and PHP configuration files/web-files/
- Default web content (ping endpoint)/.gitea/workflows/
- CI/CD pipeline for multi-PHP version builds
Container Behavior
-
Entrypoint Flow (
scripts/entrypoint.sh
):- Creates user with specified UID
- Sets up directory structure
- Configures Apache vhost based on environment variables
- In DEV mode: starts MariaDB and Memcached
- Starts Apache and PHP-FPM
-
Environment Modes:
- DEV (
environment=DEV
): Local database, memcached, automatic backups - PROD (default): Expects external database/cache services
- DEV (
-
PHP Version Management:
- Controlled via
PHPVER
environment variable (74, 80, 81, 82, 83, 84) - Each version has dedicated install script in
/scripts/
- PHP-FPM configuration dynamically created based on version
- Controlled via
Key Environment Variables
uid
(required): User ID for file permissionsuser
(required): Username for container userdomain
(required): Primary domain for Apache vhostserveralias
: Additional domains (comma-separated)PHPVER
: PHP version to use (default: 83)environment
: DEV or PROD mode
Important Technical Details
- Health Check: Available at
/ping
endpoint - Logs Location:
/home/$user/logs/apache/
and/home/$user/logs/php-fpm/
- Database Backups (DEV mode): Every 15 minutes to
/home/$user/_db_backups/
- Log Rotation: Compress after 3 days, delete after 7 days
- SSL: Self-signed certificate auto-generated, proper SSL configured
- WordPress: WP-CLI pre-installed for WordPress development