Docker Compose per WordPress risolve un problema che ogni sviluppatore conosce: il classico "sul mio computer funziona". Con un file docker-compose.yml condiviso nel repository, tutto il team lavora sullo stesso ambiente identico — stessa versione PHP, stesso MySQL, stesse estensioni. In questo articolo vediamo come configurarlo correttamente per lo sviluppo WordPress professionale.
Perché Docker e non MAMP, XAMPP o Local?
MAMP e XAMPP installano un singolo stack globale sulla macchina. Se lavori su tre progetti con versioni PHP diverse, devi continuamente switchare. Local è meglio — crea ambienti isolati — ma è proprietario, non configurabile nei dettagli, e non si integra con CI/CD.
Docker isola ogni progetto in container separati. Ogni progetto ha il suo PHP, il suo MySQL, il suo Nginx, la sua versione di WordPress. I container non interferiscono tra loro. La configurazione è in un file di testo versionato con Git — chiunque nel team può replicare l'ambiente con un singolo comando.
Il file docker-compose.yml per WordPress
La struttura minima prevede tre servizi: Nginx (web server), PHP-FPM (interprete PHP) e MariaDB (database). Aggiungi Redis per l'object cache e Mailhog per testare le email in locale senza inviarle davvero.
Punti critici della configurazione:
- Volumi: monta la cartella wp-content come volume per mantenere i file tra restart. NON montare l'intero WordPress — lascia che il container usi la sua copia interna. Questo evita problemi di performance su macOS (filesystem mount lento) e garantisce che il core sia sempre la versione corretta.
- Network: crea una network dedicata per il progetto. Ogni servizio si raggiunge per nome (db, redis, php) senza esporre porte inutili all'host.
- PHP estensioni: usa un Dockerfile custom che parte da php:8.3-fpm e aggiunge le estensioni necessarie: mysqli, pdo_mysql, gd, imagick, opcache, redis. Senza queste, WordPress funziona a metà.
- Environment variables: definisci DB_HOST, DB_NAME, DB_USER, DB_PASSWORD nel docker-compose e usa un wp-config.php che legge da getenv(). Zero credenziali hardcoded nel codice.
Workflow quotidiano con Docker
Avvio: docker compose up -d. Il primo avvio scarica le immagini e crea i container (2-3 minuti). Gli avvii successivi sono istantanei. Lavorare: modifichi i file nella cartella montata, il browser mostra le modifiche in tempo reale. Database: usa Adminer o phpMyAdmin come servizio aggiuntivo per gestire il DB visualmente. Stop: docker compose down. I dati del database persistono nel volume nominato.
Integrazione con Git e CI/CD
Il docker-compose.yml va nel repository del progetto. Quando un nuovo sviluppatore clona il repo, esegue docker compose up e ha l'ambiente funzionante in 3 minuti — senza installare PHP, MySQL o Nginx sulla sua macchina. Il Dockerfile personalizzato è anch'esso nel repo, così ogni modifica all'ambiente è tracciata e reversibile.
Per il CI/CD: GitHub Actions e GitLab CI supportano Docker nativamente. Il pipeline usa lo stesso docker-compose per eseguire i test, garantendo che il codice sia testato nello stesso ambiente in cui viene sviluppato.
Performance su macOS e Windows: il problema dei volumi
Su macOS, i volumi Docker montati dal filesystem host sono notoriamente lenti — fino a 10x più lenti che su Linux. Per WordPress, che carica centinaia di file PHP per ogni richiesta, questo è un problema serio. Soluzioni:
- Mutagen: sincronizza i file in background invece di montarli direttamente. Performance quasi native.
- NFS mount: configura il volume come NFS share. Più veloce del mount standard, meno veloce di Mutagen.
- Sviluppo solo su wp-content: monta solo la cartella che modifichi attivamente, non tutto WordPress.
Docker è eccessivo per un freelancer che lavora da solo?
No. Anche da solo, Docker ti dà: ambienti isolati per progetto, setup replicabile se cambi computer, stessa configurazione in locale e in produzione. L'investimento iniziale è mezza giornata per imparare la sintassi base. Il risparmio è centinaia di ore nell'arco della carriera.
Posso usare Docker anche in produzione per WordPress?
Puoi, ma nella maggior parte dei casi non conviene. Docker in produzione aggiunge complessità (orchestrazione, aggiornamenti container, volumi persistenti) senza vantaggi reali per un singolo sito WordPress. Un VPS con Nginx + PHP-FPM installati nativamente è più semplice, più veloce e più facile da gestire. Docker brilla in sviluppo e testing, non necessariamente in produzione per WordPress.
Quanto spazio disco serve per Docker con WordPress?
Le immagini base (PHP-FPM, Nginx, MariaDB, Redis) occupano circa 800MB-1GB totali. Ogni progetto WordPress aggiunge 100-200MB. Con 5 progetti attivi, servono circa 2-3GB di spazio per Docker. Su un disco moderno non è un problema, ma tieni d'occhio i volumi e le immagini orfane: docker system prune periodico libera spazio.
Per continuare a leggere,
accedi al tuo account.
Il tuo account LANGA ti connette a tutta la Galaxy.
Articoli completi su tutti i blog Galaxy.
Un solo login, accesso ovunque.
Guadagna Leghe e sblocca contenuti premium.