Skip to content

Sviluppare in ambiente WordPress + Docker + Bedrock

23 Febbraio 20254 minute read

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 e uploads 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

  1. Esegui docker-compose up -d per avviare i container.
  2. 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

  1. Avvia con docker-compose up -d.
  2. 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.

Related Articles

Nessun commento

Torna su