In questa breve guida vedremo come configurare un ambiente di sviluppo WordPress usando Docker, con container separati per il web server e il database MySQL. Includeremo anche l’uso di WordPress Bedrock, una versione moderna di WordPress che integra Composer per una gestione avanzata delle dipendenze. La guida segue le best practice della community e fornisce un’implementazione passo per passo.
Approccio Universale per WordPress in Docker
Per sviluppare un ambiente WordPress con Docker e Git, seguo queste best practice:
- Separazione dei Servizi: Un container per il web server (con WordPress, PHP e Apache/Nginx) e un altro per il database MySQL.
- Docker Compose: Uso un file
docker-compose.yml
per definire e gestire i container. - Persistenza dei Dati: Configuro volumi Docker per salvare il database e i file media (es.
wp-content/uploads
). - Gestione con Git: Versiono file essenziali come
docker-compose.yml
, temi e plugin personalizzati, escludendo file temporanei o media con.gitignore
. - Sicurezza: Memorizzo configurazioni sensibili (es. password) in variabili d’ambiente.
Approccio Personale
Ecco come personalizzo il mio setup:
- Volumi Nominati: Uso volumi come
db_data
per il database euploads
per i file media. - Montaggio di wp-content: Monto la directory
wp-content
locale per lavorare direttamente su temi e plugin. - Variabili d’Ambiente: Le utilizzo per rendere la configurazione flessibile e sicura.
- Git Snello: Versiono solo i file necessari, escludendo contenuti come i file media con
.gitignore
. - File Media: In sviluppo, li salvo in un volume Docker; in produzione, potresti considerare servizi come Amazon S3.
Implementazione Passo per Passo
Struttura del Progetto
wordpress-docker/
├── docker-compose.yml
├── wp-config.php (opzionale)
├── .gitignore
└── wp-content/
├── themes/
├── plugins/
└── uploads/ (gestita con volume)
File Docker Compose
version: '3.8'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
image: wordpress:latest
depends_on:
- db
ports:
- "8000:80"
volumes:
- ./wp-content:/var/www/html/wp-content
- uploads:/var/www/html/wp-content/uploads
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data:
uploads:
Configurazione WordPress
Puoi usare le variabili d’ambiente per configurare wp-config.php
automaticamente o montare un file personalizzato.
Gestione File Media
I file caricati in wp-content/uploads
sono salvati nel volume uploads
per garantire la persistenza.
File .gitignore
wp-content/uploads/
docker-compose.override.yml
*.log
Avvio e Test
- Esegui
docker-compose up -d
per avviare i container. - Accedi a http://localhost:8000 per configurare WordPress.
Alternativa consigliata: Uso di WordPress Bedrock
Bedrock è una variante di WordPress che migliora la struttura tradizionale e integra Composer per gestire dipendenze.
Struttura del Progetto Bedrock
wordpress-bedrock/
├── composer.json
├── config/
├── web/
│ ├── app/
│ │ ├── mu-plugins/
│ │ ├── plugins/
│ │ ├── themes/
│ │ └── uploads/
│ ├── wp-config.php
│ └── index.php
└── .env
Docker Compose per Bedrock
version: '3.8'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
image: wordpress:latest
depends_on:
- db
ports:
- "8000:80"
volumes:
- ./web:/var/www/html
- uploads:/var/www/html/app/uploads
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_CONFIG_EXTRA: |
define('WP_ENV', 'development');
define('WP_DEBUG', true);
volumes:
db_data:
uploads:
Gestione Dipendenze con Composer
Esegui composer install
nella directory radice per installare WordPress e le dipendenze.
Configurazione Variabili d’Ambiente
Crea un file .env
per definire impostazioni come credenziali del database:
DB_NAME=wordpress
DB_USER=wordpress
DB_PASSWORD=wordpress
DB_HOST=db
WP_ENV=development
Persistenza File Media
Il volume uploads
salva i file in web/app/uploads
.
Gestione con Git
Usa .gitignore
per escludere:
web/app/uploads/
vendor/
.env
Avvio e Test
- Avvia con
docker-compose up -d
. - Visita http://localhost:8000 per accedere al sito.
5. Vantaggi di Bedrock
- Struttura Organizzata: Separa chiaramente codice e contenuti.
- Composer: Gestione moderna delle dipendenze.
- Supporto Multi-Ambiente: Facile configurazione per sviluppo, staging e produzione con
.env
. - Git-Friendly: Ottimizzato per il controllo di versione.