Lightweight Docker-based local dev environment with Angie (NGINX fork), MariaDB, and PHP
featuring automatic HTTPS with green lock for every .local domain.
Fully portable to run from any drive (C:, D:, USB, network shares).
✅ No hardcoded paths — runs from wherever you unzip it
✅ Per-domain certificates — each project gets its own trusted HTTPS cert
✅ Beginner-friendly — one-click domain setup with green lock in browsers
✅ Production-like — mirrors real-world LEMP stack architecture
- Angie (modern NGINX fork) with HTTP/3 support
- MariaDB 11.x (MySQL-compatible)
- PHP 8.3 (with common extensions: mysqli, pdo_mysql, gd, zip, etc.)
- Automatic HTTPS via mkcert, green lock for all
.localdomains - Per-project isolation, each domain has its own certificate + config
- [ ] Todo Fully portable App, no installation required that works from any location
- Windows 10/11 (64-bit)
- Docker Desktop (with WSL2 backend recommended)
- Administrator privileges (for initial CA installation)
Option A: Git clone
git clone https://github.com/gigamaster/amp.gitOption B: Download ZIP → Extract to ANY location (C:\amp, D:\dev, USB drive, etc.)
- Navigate to
configfolder - Right-click
ssl.bat→ Run as administrator - Click "Yes" when Windows Security dialog appears (installs mkcert CA)
- Follow prompts to create your first domain (e.g.,
angie→ becomeshttps://angie.local)
Tip
Keep ssl.bat handy on your desktop
right-click → Run as admin whenever you start a new project.
Takes 10 seconds to get a green-lock HTTPS site ready for development.
From amp folder (where docker-compose.yml lives):
docker compose up -d- Create
www/angie.local/index.php:<?php phpinfo();
- Visit
https://angie.local→ ✅ Green lock!
amp/
├── config/
│ ├── ssl.bat ← Run as Admin to manage domains/certs
│ ├── mkcert.exe ← Certificate authority tool
│ ├── certs/ ← Auto-generated per-domain certificates
│ └── angie-sites/ ← Auto-generated Angie configs per domain
├── www/
│ └── gethome.local/ ← Your project files (index.php/html here)
├── docker-compose.yml ← Stack definition (Angie + MariaDB + PHP)
└── README.md
Desktop portable app
Portability: Entire stack works from any path — C:\amp, D:\projects\angie-amp, E:\USB\dev, etc. No configuration needed.
| Command | Description |
|---|---|
docker compose up -d |
Start stack (run from project root) |
docker compose down |
Stop stack |
docker compose logs -f angie |
Live Angie logs |
docker compose logs -f php |
Live PHP logs |
docker compose restart angie |
Reload configs after domain changes |
Run config/ssl.bat as Administrator to:
-
Add domain: Enter
project→ creates:- Certificate:
config/certs/project.local.pem - Hosts entry:
127.0.0.1 project.local - Web root:
www/project.local/ - Angie config:
config/angie-sites/project.local.conf - Auto-restart Angie + open browser (optional)
- Certificate:
-
Remove domain: Comments out hosts entry + optional cert cleanup
(Backup saved ashosts.bak)
✅ No manual config needed — everything automated per workflow
PHP 8.3 official security support ended December 31, 2025. To switch versions:
- Edit
docker-compose.yml:services: php: # Change image tag: image: webdevops/php-nginx:8.2 # ← 8.1, 8.2, 8.3, 8.4 available
- Rebuild containers:
docker compose down docker compose build --no-cache docker compose up -d
Note
All versions include same extensions (mysqli, pdo_mysql, gd, zip, etc.)
# Check what's using ports:
netstat -ano | findstr ":80"
netstat -ano | findstr ":443"
# Common culprits:
# - Skype → Settings → Advanced → uncheck "Use port 80/443"
# - IIS → Windows Features → uncheck "Internet Information Services"
# - Other dev tools (XAMPP, WSL2 nginx) → stop their services firstFrom PowerShell (Admin):
notepad $env:windir\System32\drivers\etc\hostsFrom normal PowerShell (opens Notepad as Admin):
Start-Process notepad.exe -Verb runas -ArgumentList "$env:windir\System32\drivers\etc\hosts"- Press
Win+R→ typecertmgr.msc→ Enter - Navigate to: Trusted Root Certification Authorities → Certificates
- Look for issuer:
mkcert <your-machine-name>\<your-username>
Firefox uses its own certificate store:
- Find root CA: Run
mkcert -CAROOTinconfigfolder - In Firefox:
about:preferences#privacy→ Certificates → View Certificates → Authorities → Import →rootCA.pem
- Ensure Docker Desktop is running (system tray icon visible)
- Restart Docker Desktop if containers won't start
- Check WSL2 integration: Docker Desktop → Settings → Resources → WSL Integration
- Officially reserved for local network use (RFC 6762)
- Never resolves on public internet → safe for development
- Works with mDNS/Bonjour on macOS/Linux (though Windows uses hosts file)
- ANGIE-AMP: MIT License
- Angie: BSD 2-Clause
- mkcert: BSD 3-Clause
- Docker images: webdevops/php-nginx
Made with ❤️ for simplicity and reliability