Torna al blog

Come configurare un sito Drupal o WordPress localmente usando Docker

2020-09-024 minuti di lettura

Questo articolo non mira a fornire spiegazioni sugli strumenti che utilizzo per configurare siti Drupal/WordPress, penso che ci siano molte informazioni disponibili su Internet su di essi Docker, Traefik, Compose. L'unico obiettivo di questo post è documentare il processo che seguo poiché è davvero facile, e sperando che possa aiutare anche altre persone.

Prerequisiti: Prima di iniziare, è necessario:

  1. Docker installato.
  2. Conoscenza di base di git.
  3. Familiarità con il terminale.
  4. Un repository/codebase esistente di Drupal/WordPress. Se vuoi solo provare un'installazione pulita, segui la documentazione ufficiale delle installazioni vanilla da wodby.com, sono più facili di questa. Gli URL sono: Drupal o WordPress

I passaggi per Drupal 7/8/9:

  1. Crea una cartella dove vuoi conservare i file del tuo progetto. Il nome della cartella è importante poiché la rete verrà creata in base ad essa. Scegli un nome breve e possibilmente di una sola parola. Il nome verrà utilizzato anche per l'URL. Ai fini di questo tutorial, creerò una cartella chiamata d8base.
  2. Clona il repository Docker4Drupal nella cartella che hai creato al passaggio 1. Puoi eseguire questo comando dal terminale per farlo: git clone [email protected]:wodby/docker4drupal.git .
  3. Crea una nuova cartella e chiamala web, all'interno della cartella che hai creato al passaggio 1. Nel file docker-compose, Nginx è configurato di default per utilizzare la cartella web come root del server. Cloneremo anche il nostro codebase Drupal in questa cartella.
  4. Rimuovi il file docker-compose.override.yml e la struttura dei tuoi file dovrebbe apparire così: Alt Text
  5. Apri i file nel tuo IDE preferito e modifica il file .env. Le righe che dobbiamo aggiornare sono le righe 7 e 8. Come nome del progetto, dovremmo usare lo stesso nome che abbiamo usato per la cartella creata al passaggio 1 (nel mio caso d8base). Come URL del progetto, uso il nome della cartella creata al passaggio 1 come prefisso e mantengo la parte docker.localhost. Questa è solo una mia preferenza.
PROJECT_NAME=d8base
PROJECT_BASE_URL=d8base.docker.localhost
  1. Modifica il file docker-compose.yml ed effettua i seguenti aggiornamenti: *Commenta tutte le righe relative a traefik poiché creeremo un file traefik.yml globale più tardi.
  2. Alt Text
    *Decommenta le righe relative a PhpMyAdmin (pma) in modo da averlo disponibile per importare il nostro database:Alt Text
  3. Nella cartella web, creata come parte del passaggio 3, clona il repository del tuo codebase Drupal. Assicurati che il codice Drupal si trovi in questa cartella stessa invece che in una sottocartella.
  4. Nel terminale, all'interno della cartella creata al passaggio 1, esegui il seguente comando per avviare i servizi:
make up

Configura traefik

  1. Crea una nuova cartella, consiglio di chiamarla traefik, e al suo interno crea un file traefik.yml, il contenuto del file dovrebbe essere questo:
version: '3'
services:
  traefik:
    image: traefik:v2.0
    command: --api.insecure=true --providers.docker
    networks:
      - d8base
    ports:
      - '80:80'
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
networks:
  d8base:
    external:
      name: d8base_default

Se hai più progetti da configurare, devi solo aggiungerli al traefik.yml, in modo simile a questo:
Alt Text

  1. Nel terminale, esegui il seguente comando nella cartella traefik:

docker-compose -f traefik.yml up -d

I passaggi per WordPress

  1. Il processo è lo stesso che abbiamo seguito per Drupal, l'unica differenza si presenta al passaggio 2, dove dobbiamo clonare Docker4Wordpress invece.

IMPORTANTE: Assicurati che questa riga non sia commentata: NGINX_SERVER_ROOT: /var/www/html/web

Note:

  1. Puoi importare il database da http://pma.d8base.docker.localhost/ sostituisci d8base con il nome della cartella creata al passaggio 1
  2. Il tuo sito dovrebbe essere accessibile da http://d8base.docker.localhost/ sostituisci d8base con il nome della cartella creata al passaggio 1
  3. Assicurati che la porta 80 della tua macchina non sia utilizzata da altre applicazioni/siti prima di seguire questo tutorial.
  4. Drupal: Se hai bisogno di eseguire comandi drush, composer o drupal console esegui questo comando docker exec -it d8base_php /bin/bash e cd web sostituisci d8base con il nome della cartella creata al passaggio 1
  5. Se hai bisogno di effettuare il downgrade della versione di composer alla versione 1 esegui questo: composer self-update --1
  6. Potrebbe essere necessario modificare il file /etc/hosts e aggiungere una voce come questa: 127.0.0.1 d8base.docker.localhost
  7. IMPORTANTE: Ogni volta che docker viene riavviato, devi eseguire docker-compose -f traefik.yml up -d dalla cartella traefik.
  8. Drupal: Assicurati che le informazioni del database siano corrette nel tuo file settings.php. Il file .env ha queste informazioni e quelle predefinite dovrebbero apparire così:
$databases['default']['default'] = array (
  'database' => 'drupal',
  'username' => 'drupal',
  'password' => 'drupal',
  'prefix' => '',
  'host' => 'mariadb',
  'port' => '3306',
  'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
  'driver' => 'mysql',
);