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 --install from 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

Verify with git --version — you should see Git 2.x+.

3. Clone the WordPress Pete Docker project

Open the PowerShell and run the follwing commands
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 --build command 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

docker compose exec php bash

docker compose exec apache bash

docker compose exec mysql bash

Inspect logs, run WP-CLI / Artisan, tweak files quickly.
Force clean image rebuild

docker compose build --no-cache apache

docker compose build --no-cache php

docker compose build --no-cache mysql

After editing any Dockerfile.
Reset phpMyAdmin

docker compose down

docker volume rm wp-pete-docker_pma_data

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.