Comment configurer un site Drupal ou WordPress localement avec Docker
Cet article n'a pas pour but de fournir des explications sur les outils que j'utilise pour configurer des sites Drupal/WordPress, je pense qu'il y a beaucoup d'informations disponibles sur Internet à leur sujet : Docker, Traefik, Compose. Le seul objectif de ce post est de documenter le processus que je suis, car il est vraiment facile, et en espérant que cela puisse aider d'autres personnes aussi.
Prérequis : Avant de commencer, vous avez besoin de :
- Docker installé.
- Connaissances de base de git.
- Être familier avec le terminal.
- Un dépôt/une base de code Drupal/WordPress existante. Si vous souhaitez seulement essayer une installation fraîche, veuillez suivre la documentation officielle des installations vanilla de wodby.com, elles sont plus faciles que celle-ci. Les URL sont : Drupal ou WordPress
Les étapes pour Drupal 7/8/9 :
- Créez un dossier où vous souhaitez conserver les fichiers de votre projet. Le nom du dossier est important car le réseau sera créé en fonction de celui-ci. Choisissez un nom court et d'un seul mot, si possible. Le nom sera également utilisé pour l'URL. Pour les besoins de ce tutoriel, je vais créer un dossier nommé d8base.
- Clonez le dépôt Docker4Drupal dans le dossier que vous avez créé à l'étape 1. Vous pouvez exécuter cette commande depuis le terminal pour ce faire :
git clone [email protected]:wodby/docker4drupal.git .
- Créez un nouveau dossier et nommez-le web, à l'intérieur du dossier que vous avez créé à l'étape 1. Dans le fichier docker-compose, Nginx est configuré par défaut pour utiliser le dossier web comme racine du serveur. Nous clonons également notre base de code Drupal dans ce dossier.
- Supprimez le fichier docker-compose.override.yml et votre structure de fichiers devrait ressembler à ceci :
- Fichiers dans votre IDE préféré et modifiez le fichier .env. Les lignes que nous devons mettre à jour sont les lignes 7 et 8. En tant que nom de projet, nous devons utiliser le même que celui que nous avons utilisé pour le dossier créé à l'étape 1 (dans mon cas d8base). En tant qu'URL du projet, j'utilise le nom du dossier créé à l'étape 1 comme préfixe et je garde la partie docker.localhost. C'est juste ma préférence.
PROJECT_NAME=d8base
PROJECT_BASE_URL=d8base.docker.localhost
- Modifiez le fichier docker-compose.yml et apportez les mises à jour suivantes : *Commentez toutes les lignes relatives à traefik car nous allons créer un fichier traefik.yml global plus tard.
*Décommentez les lignes relatives à PhpMyAdmin (pma) afin que nous puissions l'utiliser pour importer notre base de données :- Dans le dossier web, créé dans le cadre de l'étape 3, clonez le dépôt de votre base de code Drupal. Veuillez vous assurer que le code Drupal se trouve dans ce dossier lui-même et non dans un sous-dossier.
- Dans le terminal, à l'intérieur du dossier créé à l'étape 1, exécutez la commande suivante pour démarrer les services :
make up
Configurer traefik
- Créez un nouveau dossier, je recommande de le nommer traefik, et à l'intérieur créez un fichier traefik.yml, et le contenu du fichier devrait être ceci :
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
Si vous avez plus de projets à configurer, il vous suffit de les ajouter au traefik.yml, comme ceci :
- Dans le terminal, exécutez la commande suivante dans le dossier traefik :
docker-compose -f traefik.yml up -d
Les étapes pour WordPress
- Le processus est le même que celui que nous avons suivi pour Drupal, la seule différence réside dans l'étape 2, où nous devons cloner le Docker4Wordpress à la place.
IMPORTANT : Assurez-vous que cette ligne n'est pas commentée : NGINX_SERVER_ROOT: /var/www/html/web
Notes :
- Vous pouvez importer la base de données depuis http://pma.d8base.docker.localhost/ remplacez d8base par le nom du dossier créé à l'étape 1
- Votre site devrait être accessible depuis http://d8base.docker.localhost/ remplacez d8base par le nom du dossier créé à l'étape 1
- Assurez-vous que le port 80 de votre machine n'est pas utilisé par une autre application/site avant de suivre ce tutoriel.
- Drupal : Si vous avez besoin d'exécuter des commandes drush, composer ou drupal console, exécutez cette commande
docker exec -it d8base_php /bin/bash
etcd web
remplacez d8base par le nom du dossier créé à l'étape 1 - Si vous avez besoin de rétrograder la version de composer à la version 1, exécutez ceci :
composer self-update --1
- Vous devrez peut-être modifier le fichier /etc/hosts et ajouter une entrée comme celle-ci :
127.0.0.1 d8base.docker.localhost
- IMPORTANT : Chaque fois que docker est redémarré, vous devez exécuter
docker-compose -f traefik.yml up -d
depuis le dossier traefik. - Drupal : Assurez-vous que les informations de la base de données sont correctes dans votre fichier settings.php. Le fichier .env contient ces informations, et les valeurs par défaut devraient ressembler à ceci :
$databases['default']['default'] = array (
'database' => 'drupal',
'username' => 'drupal',
'password' => 'drupal',
'prefix' => '',
'host' => 'mariadb',
'port' => '3306',
'namespace' => 'Drupal\\Core\\Database\\Driver\\mysql',
'driver' => 'mysql',
);