Windows Installation Guide
1. Install Docker Desktop for Windows
-
Download the installer from Docker: https://www.docker.com/products/docker-desktop.
-
Enable WSL 2 & Virtual Machine Platform when the wizard offers to do so (or run
wsl --installfrom an elevated PowerShell first). -
Reboot if prompted, then launch Docker Desktop and wait for the whale icon to say “Docker Desktop is running.”
2. Install Git (CLI)
-
Fastest: open PowerShell and run
winget install --id Git.Git -e
3. Clone the WordPress Pete Docker project
mkdir C:\Sites;
cd C:\Sites
git clone https://github.com/peterconsuegra/wp-pete-docker.git
cd wp-pete-docker
copy .env.example.development .env
docker compose up --build
-
Wait until the
docker compose up --buildcommand finishes; the prompt will return when all containers are healthy. -
Make sure your browser uses HTTP (not HTTPS).
-
Open http://pete.petelocal.net/ — you should see WordPress’s setup screen.
- Stop the Docker environment using: Ctrl + C
Develop inside the Docker Container
Develop inside the Docker container
1. Install Visual Studio Code for Windows: https://code.visualstudio.com.
2. Press Ctrl + Shift + X and install the Dev Containers extension (Microsoft).
3. Confirm Docker Desktop is running and the WordPress Pete containers are up (docker ps).
4. In VS Code click the green >< icon (bottom-left) → Dev Containers ▸ Attach to Running Container… → choose wordpresspete_php_1 (or any container).
5. Once VS Code reloads “in container,” choose File ▸ Open Folder… and browse to /var/www/html – the shared volume with all WordPress/Laravel code.
Docker Compose workflow cheatsheet (Windows)
| Task | Command (run in the project root) | When / Why |
|---|---|---|
| Project root | cd C:\Sites\wp-pete-docker |
Jump to the stack |
| Start / rebuild | docker compose up --build |
Re-creates images that changed and starts every service. Hit Ctrl +C to stop the foreground stack. |
| Shell inside a container |
|
Inspect logs, run WP-CLI / Artisan, tweak files quickly. |
| Force clean image rebuild |
|
After editing any Dockerfile. |
| Reset phpMyAdmin |
|
Re-generates phpMyAdmin on the next up. |
| Delete all volumes (nuke-and-pave) | docker compose down -v |
Removes every named/anonymous volume—irreversible. |
| Restart Apache inside its container | apache2ctl restart |
Apply v-host changes without recreating the whole stack. |
| Where Apache keeps v-hosts | /etc/apache2/sites-available (staging) /etc/apache2/sites-enabled (live) |
Edit, then run apache2ctl graceful in the container. |
| Enter MySQL as root | docker compose exec mysql -u root -p |
Password = MYSQL_ROOT_PASSWORD in .env. |
| Trigger graceful Apache reload from CI | curl -sf -H "X-Reload-Secret: $APACHE_RELOAD_SECRET" http://apache/internal-reload |
Lets a deploy script tell Apache to reload configs. |