Files
alwisp/docker-compose.yml
Claude 3e26125afa Add Dockerized LAMP stack and website skeleton for ALWISP
- Docker Compose orchestrating PHP 8.2/Apache web container and MySQL 8.0
- Dockerfile with GD, PDO, MySQLi extensions and security hardening
- Apache vhost with mod_rewrite, deflate, expires, and security headers
- PHP config with OPcache enabled and display_errors off
- MySQL init schema (contacts, coverage_zones tables)
- Front-controller PHP router (index.php → pages/)
- Responsive homepage: hero, stats bar, services cards, why section, coverage CTA
- Stub pages: services, coverage, about, contact (with working form skeleton), 404
- CSS design system using brand palette from logo (navy #0d1b3e → teal #00bcd4 + orange #f57c00 accents)
- JS: nav scroll/mobile toggle, IntersectionObserver counter animation, scroll reveal

https://claude.ai/code/session_015wpwmheufcxkBuXivrSHhd
2026-02-28 21:39:21 +00:00

65 lines
1.3 KiB
YAML

version: '3.9'
services:
web:
build:
context: .
dockerfile: Dockerfile
container_name: alwisp_web
ports:
- "80:80"
- "443:443"
volumes:
- ./www:/var/www/html
- ./docker/apache/000-default.conf:/etc/apache2/sites-available/000-default.conf
- ./docker/apache/ssl:/etc/apache2/ssl
environment:
- DB_HOST=db
- DB_NAME=${DB_NAME}
- DB_USER=${DB_USER}
- DB_PASS=${DB_PASS}
depends_on:
- db
networks:
- alwisp_net
restart: unless-stopped
db:
image: mysql:8.0
container_name: alwisp_db
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS}
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASS}
volumes:
- db_data:/var/lib/mysql
- ./docker/mysql/init.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- alwisp_net
restart: unless-stopped
phpmyadmin:
image: phpmyadmin:latest
container_name: alwisp_pma
ports:
- "8080:80"
environment:
PMA_HOST: db
PMA_USER: ${DB_USER}
PMA_PASSWORD: ${DB_PASS}
depends_on:
- db
networks:
- alwisp_net
restart: unless-stopped
profiles:
- tools
volumes:
db_data:
networks:
alwisp_net:
driver: bridge