Nous allons créer un environnement local Docker pour WordPress, composé de Nginx, PHP-FPM, MySQL et PhpMyAdmin.

Étapes de Configuration

  1. Préparer l’environnement de travail
  2. Créer le fichier docker-compose.yml
  3. Configurer Nginx avec Docker
  4. Ajouter PHP-FPM
  5. Intégrer MySQL et PhpMyAdmin
  6. Installer et configurer WordPress

1. Préparer l’Environnement de Travail

Créez un dossier nommé wordpress qui contiendra tous les fichiers nécessaires.

2. Création de docker-compose.yml

Dans le dossier wordpress, créez un fichier docker-compose.yml. C’est ici que nous définirons nos services.

Exemple de base pour récupérer l’image Nginx et ouvrir le port 8002 :

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8002:80"

Explications :

  • web : Nom du service, modifiable à volonté.
  • image: nginx : Image de Nginx téléchargée depuis Docker Hub.
  • ports : accéder au port 8002 (local) , le port 80 est le port par défaut exposé par Nginx.

Exécutez ensuite :

docker-compose build && docker-compose up -d

Vérifiez dans votre navigateur : http://localhost:8002


3. Configurer Nginx avec Docker

Créez un dossier docker/nginx et ajoutez un fichier Dockerfile et un fichier de configuration default.conf :

Dockerfile :

FROM nginx
ADD default.conf /etc/nginx/conf.d

default.conf :


server {
    listen 0.0.0.0:80;
    root /var/www/html/;
    location / {
        index index.html;
    }
}

Ajoutez cette configuration au docker-compose.yml :


web:
  build: docker/nginx
  ports:
    - "8002:80"
  volumes:
    - ./project/:/var/www/html/

Créez ensuite un fichier index.html dans le dossier project pour vérifier que la configuration fonctionne.

dans le localhost:8002:


4. Ajouter PHP-FPM

Pour que Nginx gère PHP, ajoutez un service PHP-FPM dans le docker-compose.yml :


myphpfpm:
  image: php:fpm-alpine
  volumes:
    - ./project/:/var/www/html/

Dans le fichier default.conf de Nginx, configurez la gestion PHP :


server {
    listen 0.0.0.0:80;
    root /var/www/html/;
    location / {
        index index.php index.html;
    }
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass myphpfpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
    }
}

Créez un fichier index.php dans le dossier project avec ce contenu pour tester PHP :


<?php phpinfo(); ?>

Redémarrez Docker :

docker-compose build && docker-compose up -d

Maintenant dans le localhost:8002

Screenshot

Maintenant dans notre dossier on a :

5. Intégrer MySQL et PhpMyAdmin

Ajoutez MySQL et PhpMyAdmin, et un volume (pour persister les données) au docker-compose.yml :

bdd:
  image: mysql/mysql-server
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: name_db
    MYSQL_USER: name_user
    MYSQL_PASSWORD: password
  ports:
    - "3302:3306"
  volumes:
    - db:/var/lib/mysql

phpmyadmin:
  image: phpmyadmin
  ports:
    - 8802:80
  environment:
    PMA_HOST: "bdd"
    MYSQL_ROOT_PASSWORD: root

volumes:
  db:

Vérifiez PhpMyAdmin sur http://localhost:8802.

Ensuite entrez votre login et mot de passe:

Screenshot

6. Installer et Configurer WordPress

Téléchargez WordPress depuis le site officiel, et placez le contenu dans le dossier project.

Renommez le fichier wp-config-sample.php en wp-config.php et configurez la base de données :

define( 'DB_NAME', 'name_db' );
define( 'DB_USER', 'name_user' );
define( 'DB_PASSWORD', 'password' );
define( 'DB_HOST', 'localhost:3302' );

Installation de l’extension mysqli pour PHP

Ajoutez un fichier Dockerfile dans docker/php pour inclure l’extension mysqli :

FROM php:fpm-alpine
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli

Modifiez le service PHP dans docker-compose.yml pour qu’il utilise ce Dockerfile :

myphpfpm:
  build: ./docker/php
  volumes:
    - ./project/:/var/www/html/

Relancez Docker et installez WordPress en accédant à http://localhost:8002.


Avec ces étapes, votre environnement WordPress dockerisé est prêt !

Je suis Pascal Yu, je vous aide à développer vos solutions à l’aide de Symfony.

Prend un rendez vous gratuitement avec moi pour savoir comment je peux vous aider.