Faire fonctionner Joomla sur votre ordinateur nécessite quatre éléments -> télécharger et configurer un serveur web Apache ou nginx, un service de base de données comme MySQL ou MariaDB, et bien sûr nous avons besoin de PHP et de Joomla. Pour que tous ces différents éléments communiquent réellement entre eux, la plupart d'entre nous s'appuient sur des logiciels groupés comme XAMPP, Laragon, ou FlyEnv.

Cependant, les configurations traditionnelles peuvent facilement entraîner des conflits de ports ou des serveurs de base de données qui refusent mystérieusement de démarrer. Lorsqu'un serveur local plante, vous pouvez vous retrouver à télécharger et réinstaller manuellement des sites Joomla entiers encore et encore juste pour tester un seul PR, risquant de perdre votre travail en corrigeant un bug. Cela consomme un temps précieux, et les correctifs ne sont généralement que des solutions temporaires.

Le passage à Docker (En savoir plus sur Docker) Avec Docker, vous pouvez vous passer entièrement de la configuration manuelle. Au lieu d'installer des serveurs web directement sur votre ordinateur, il suffit d'écrire un seul fichier « recette ». Docker télécharge, isole et connecte automatiquement tout en arrière-plan. Si quelque chose casse, vous ne réinstallez pas toute votre configuration ; vous redémarrez simplement le conteneur.

Dans ce guide, vous apprendrez la méthode la plus simple pour faire fonctionner un environnement Joomla local avec Docker, vous permettant de passer moins de temps à réparer des serveurs et plus de temps à contribuer.

Prérequis

Vous n'avez besoin que d'une seule chose installée avant de commencer : Docker Desktop.

  • Téléchargez-le depuis docker.com et lancez l'installateur
  • Sous Windows, laissez l'option « Use WSL 2 instead of Hyper-V » cochée - cela accélère les choses
  • Ouvrez Docker Desktop et attendez que le coin inférieur gauche affiche un statut vert Engine running.

Docker Desktop showing green Engine running status

C'est tout.

Le fichier docker-compose.yml

Lorsque vous avez besoin que plusieurs services communiquent - comme un serveur web (Apache/Nginx), PHP, et une base de données (MySQL/MariaDB) - vous utilisez un fichier d'orchestration spécial appelé docker-compose.yml. Ce fichier agit comme le plan directeur de votre projet, définissant tous les services requis et la façon dont ils collaborent. (L'image Docker officielle de Joomla est en fait construite au-dessus d'une image PHP et Apache. Cela signifie qu'en utilisant simplement cette image Joomla, vous obtenez PHP, Apache, et Joomla regroupés ensemble)

Tout d'abord, créez un nouveau dossier sur votre ordinateur pour votre projet (par exemple, sur votre bureau, créez un dossier appelé joomla-docker).

Dans ce dossier, créez un nouveau fichier texte et nommez-le exactement ainsi :

docker-compose.yml

Ouvrez ce fichier dans un éditeur de texte quelconque (comme VS Code ou Notepad), collez le code suivant exactement tel quel, et enregistrez-le :

services:
  joomla:
    image: joomla:latest
    ports:
      - "8080:80"
    environment:
      - JOOMLA_DB_HOST=db
      - JOOMLA_DB_USER=joomla
      - JOOMLA_DB_PASSWORD=joomlapass
      - JOOMLA_DB_NAME=joomladb
    depends_on:
      - db
  db:
    image: mariadb:10.11
    environment:
      - MYSQL_ROOT_PASSWORD=rootpass
      - MYSQL_DATABASE=joomladb
      - MYSQL_USER=joomla
      - MYSQL_PASSWORD=joomlapass
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data:

Démarrage de l'environnement

Ouvrez votre terminal (ou PowerShell sous Windows), naviguez vers votre dossier joomla-docker, et exécutez :

docker compose up -d

La première fois que vous exécutez cela, Docker va télécharger les images Joomla et MariaDB, ce qui peut prendre une minute ou deux selon la vitesse de votre connexion internet. Ensuite, chaque démarrage suivant est quasiment instantané, comme vous pouvez le voir ci-dessous.

Terminal showing Docker containers starting up

L'installateur de Joomla

Ouvrez votre navigateur et rendez-vous sur http://localhost:8080. Vous devriez voir l'écran d'installation de Joomla.
Joomla installation screen step one

Renseignez le nom de votre site et les informations de l'administrateur sur le premier écran.

Joomla installation site setup screen

Lorsque vous arrivez à l'écran de Configuration de la base de données, c'est là que la plupart des gens se retrouvent bloqués :

Ne saisissez pas localhost comme nom d'hôte.

Comme la base de données fonctionne dans son propre conteneur, Joomla a besoin du nom du service du conteneur — pas de localhost. Utilisez exactement ces valeurs :

  • Type de base de données : MySQLi
  • Nom d'hôte : db
  • Identifiant : joomla
  • Mot de passe : joomlapass
  • Nom de la base de données : joomladb

Joomla database configuration screen showing exact Docker values

Cliquez sur suivant, terminez l'installation, et c'est fait.

Lorsque vous avez fini de travailler pour la journée, exécutez docker compose stop pour mettre en pause les conteneurs et libérer de la mémoire. Votre site sera exactement où vous l'avez laissé la prochaine fois.


Problèmes courants

  • La page sur localhost:8080 ne se charge pas juste après le démarrage : Le conteneur de la base de données met quelques secondes à terminer son initialisation. Attendez 30 secondes et actualisez.
  • Le port 8080 est déjà utilisé : Remplacez "8080:80" par "8081:80" dans le fichier compose et accédez-y via localhost:8081 à la place.
  • Les conteneurs ont démarré mais Joomla affiche une erreur de base de données : Vérifiez que le nom d'hôte dans l'installateur est bien db et non localhost.

Astuce de pro : accéder aux fichiers Joomla pour le développement

À ce stade, votre site Joomla fonctionne, mais les fichiers PHP réels sont cachés à l'intérieur du conteneur Docker. Si vous souhaitez contribuer à Joomla, tester des PR, ou écrire vos propres plugins, vous avez besoin de ces fichiers sur votre ordinateur afin de pouvoir les ouvrir dans VS Code ou votre éditeur préféré.

Pour synchroniser les fichiers du conteneur vers votre disque dur local, il vous suffit d'ajouter deux lignes (volumes: ) et (- ./site_joomla:/var/www/html) à la section joomla de votre fichier docker-compose.yml comme indiqué ci-dessous :

services:
  joomla:
    image: joomla:latest
    ports:
      - "8080:80"
    volumes:
      - ./site_joomla:/var/www/html
    # ... (rest of your settings)

Ce que cela fait :

La prochaine fois que vous exécuterez docker compose up -d, Docker créera automatiquement un dossier appelé site_joomla juste à côté de votre fichier compose. Il copiera l'intégralité du cœur de Joomla (y compris le Panneau d'administration, les composants et les templates) dans ce dossier.

File explorer showing the synced Joomla files in the local directory

Toute modification de code que vous apportez dans ce dossier sur votre ordinateur sera instantanément mise à jour dans le conteneur en cours d'exécution ! Vous êtes désormais entièrement prêt pour le développement en local.

Astuce bonus 1 : tester des versions spécifiques de Joomla et PHP

Lors du test de PR, les mainteneurs vous demanderont souvent de tester avec des versions spécifiques de PHP. Avec XAMPP, rétrograder ou mettre à jour PHP est un cauchemar. Avec Docker, cela prend deux secondes.

Au lieu d'utiliser image: joomla:latest dans votre docker-compose.yml, vous pouvez spécifier des versions exactes à l'aide de balises. Par exemple, si vous devez tester Joomla 5.2 sur PHP 8.3, modifiez simplement cette ligne par : image: joomla:5.2-php8.3-apache

Exécutez à nouveau docker compose up -d, et Docker remplacera instantanément votre environnement serveur. Vous trouverez toutes les balises de version disponibles sur la page officielle de Joomla sur Docker Hub.

Astuce bonus 2 : ajouter phpMyAdmin

Si vous venez de XAMPP, l'absence d'une interface visuelle pour consulter votre base de données pourrait vous manquer. Vous pouvez facilement ajouter phpMyAdmin à votre configuration en ajoutant un nouveau bloc de service à la fin de votre fichier docker-compose.yml :

phpmyadmin:
  image: phpmyadmin/phpmyadmin:latest
  ports:
    - "8081:80"
  environment:
    - PMA_HOST=db
  depends_on:
    - db

Redémarrez vos conteneurs, puis accédez à phpMyAdmin en vous rendant sur http://localhost:8081 dans votre navigateur. Connectez-vous simplement avec joomla comme identifiant et joomlapass comme mot de passe.