# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview This is a Docker-based web server container that provides an Apache HTTP Server with an auto-detection mechanism for web content. If the web directory is empty on startup, it automatically copies a default landing page. ## Key Architecture - **Container Base**: Apache HTTP Server on Alpine Linux (`httpd:alpine`) - **Startup Logic**: `scripts/startup.sh` handles the auto-detection and default content copying - **Default Content**: Professional landing page in root `index.html` - **Web Root**: `/usr/local/apache2/htdocs` inside the container ## Common Commands ### Build and Run ```bash # Build the container docker build -t my-web-server . # Run with default settings docker run -p 80:80 my-web-server # Run with volume mount for custom content docker run -p 80:80 -v /path/to/web/content:/usr/local/apache2/htdocs my-web-server # Run on custom port docker run -p 8080:80 my-web-server ``` ### Development ```bash # View container logs docker logs # Execute shell in running container docker exec -it /bin/sh # Test startup script locally chmod +x scripts/startup.sh ./scripts/startup.sh ``` ## Server Deployment - The git directory on the servers are /root/whp and once you do a git pull, to sync web files you would run the rsync command for web-files/ to /docker/whp/web/ ## Important Implementation Details 1. **Auto-Detection Logic**: The startup script checks if `/usr/local/apache2/htdocs` is empty (ignoring hidden files) before copying default content 2. **Non-Destructive**: Only copies default content if the directory is truly empty - won't overwrite existing files 3. **Startup Flow**: - Container starts → `startup.sh` runs → Checks for content → Copies if empty → Starts Apache 4. **Default Landing Page**: Responsive, professional design with proper meta tags and CSS