Installer WordPress avec Docker

Fichiers d’Installation de Docker WordPress : Exemple pour le Développement Local

Cet article montre un exemple de fichiers de configuration de WordPress Docker pour le développement local sous Windows, MAC ou Ubuntu.

Le kit d’installation et les fichiers de configuration incluent les éléments suivants:

  • Fichiers WordPress
  • MariaDB/MySQL utilisé pour la base de données WordPress
  • Interface phpMyAdmin pour se connecter à votre base de données MySQL
  • WP-Cli : Interface de ligne de commande WordPress
  • Directives Makefile pour l’automatisation.

Vous apprendrez:

  • Structure du répertoire Docker de WordPress
  • Fichiers de configuration docker-compose et WP-Cli
  • Installation de WordPress à l’aide de docker-compose


Sommaire:

Étape 1. Télécharger un modèle de configuration du Docker WordPress

Téléchargez un modèle à partir de Github à l’adresse kassambara/wordpress-docker-compose

git clone https://github.com/kassambara/wordpress-docker-compose
cd wordpress-docker-compose

Structure du répertoire de projet:

files/wordpress-docker-compose
├── LICENSE
├── Makefile
├── README.Rmd
├── README.md
├── config
│   └── php.conf.ini
├── docker-compose-onlinehost.yml
├── docker-compose.yml
├── mysql
├── setup-onlinehost.sh
├── wordpress
├── wp-auto-config.yml
└── wpcli
    ├── Dockerfile
    ├── Makefile
    └── entrypoint.sh

Dossiers essentiels:

  • mysql : Fichiers de base de données MySQL pour MariaDB
  • wordpress : Fichiers web WordPress
  • wpcli contient un exemple de Dockerfile pour construire le CLI de WordPress.

Dossiers essentiels:

  • Fichier .env : contient les variables d’environnement requises pour l’installation de wordpress
  • docker-compose.yml : docker-compose définissant les services WordPress
  • Makefile : Ensemble de lignes de commande bash simples pour construire, installer et configurer WordPress, ainsi que pour démarrer et arrêter les conteneurs dockers.

Étape 2. Inspecter le contenu des fichiers de configuration

Nous allons inspecter les fichiers de configuration suivants:

  1. ./docker-compose.yml : Définit les services docker pour l’exécution de wordpress
  2. ./wplci/Dockerfile et ./wpcli/Makefile : Fournit des options en ligne de commande pour manipuler la base de données WordPress
  3. “./Makefile” : Fournit les commandes make pour démarrer, installer et auto-installer wordpress.

fichier de configuration docker-compose

Inspecter le contenu du fichier docker-compose.yml, qui définit 4 services:

  • WordPress/PHP
  • Base de données MySQL
  • Interface phpMyAdmin pour la base de données
  • wpcli : interface en ligne de commande WordPress
  • healthcheck, qui vérifie si les services (MySQL, wordpress) sont prêts
version: '3.6'
services:

  wordpress:
    image: wordpress:${WORDPRESS_VERSION:-latest}
    container_name: ${COMPOSE_PROJECT_NAME:-wordpress}
    volumes:
      - ./config/php.conf.ini:/usr/local/etc/php/conf.d/php.ini
      - ${WORDPRESS_DATA_DIR:-./wordpress}:/var/www/html
    environment:
      - WORDPRESS_DB_NAME=${COMPOSE_PROJECT_NAME:-wordpress}
      - WORDPRESS_TABLE_PREFIX=${WORDPRESS_TABLE_PREFIX:-wp_}
      - WORDPRESS_DB_HOST=${WORDPRESS_DB_HOST:-mysql}
      - WORDPRESS_DB_USER=${DATABASE_USER:-root}
      - WORDPRESS_DB_PASSWORD=${DATABASE_PASSWORD:-password}
    depends_on:
      - mysql
      - phpmyadmin
    restart: always
    ports:
        - 80:80

  mysql:
    image: mariadb:${MARIADB_VERSION:-latest}
    container_name: ${COMPOSE_PROJECT_NAME}_mysql
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${DATABASE_PASSWORD:-password}
      - MYSQL_USER=${DATABASE_USER:-root}
      - MYSQL_PASSWORD=${DATABASE_PASSWORD:-password}
      - MYSQL_DATABASE=${COMPOSE_PROJECT_NAME:-wordpress}
    restart: always

  phpmyadmin:
    depends_on:
      - mysql
    image: phpmyadmin/phpmyadmin:${PHPMYADMIN_VERSION:-latest}
    container_name: ${COMPOSE_PROJECT_NAME}_phpmyadmin
    restart: always
    ports:
      - ${PHPMYADMIN_PORT}:80
    environment:
      PMA_HOST: mysql
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-password}

  # Interface de ligne de commande pour WordPress
  wpcli:
    build: ./wpcli/
    image: wpcli
    container_name: ${COMPOSE_PROJECT_NAME}_wpcli
    volumes:
      - ${WORDPRESS_DATA_DIR:-./wordpress}:/var/www/html
    working_dir: /var/www/html

# Vérifier la disponibilité des services essentiels
  healthcheck:
    image: wpcli
    build: ./wpcli/
    container_name: ${COMPOSE_PROJECT_NAME}_healthcheck
    command: sh -c "/wait"
    environment:
      - WAIT_HOSTS=mysql:3306, wordpress:80
      - WAIT_BEFORE_HOSTS=${WAIT_BEFORE_HOSTS:-30}
      - WAIT_AFTER_HOSTS=${WAIT_AFTER_HOSTS:-15}
      - WAIT_HOSTS_TIMEOUT=${WAIT_HOSTS_TIMEOUT:-300}
      - WAIT_SLEEP_INTERVAL=${WAIT_SLEEP_INTERVAL:-30}
      - WAIT_HOST_CONNECT_TIMEOUT=${WAIT_HOST_CONNECT_TIMEOUT:-30}

Notez que, sous l’application wordpress, nous mappons le ./config/php.conf.ini dans le conteneur de sorte que le PHP récupère nos paramètres de configuration supplémentaires spécifiés ci-dessous. Cela permet d’augmenter la limite de téléchargement.

Contenu de: ./config/php.conf.ini

file_uploads = On
memory_limit = 512M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 600

Notez également que le fichier docker-compose.yml fourni inclut l’application phpMyAdmin. Si vous souhaitez utiliser l’interface admirer pour votre base de données, ajoutez les directives suivantes dans votre fichier docker-compose.yml au lieu des directives phpMyAdmin.

  adminer:
    image: adminer
    restart: always
    links:
      - mysql
    ports:
      - 8080:8080

WP Cli Dockerfile et fichier de configuration

Le WordPress cli est construit à partir du fichier docker suivant, qui inclut l’outil [docker-compose-wait tool] (https://www.datanovia.com/en/fr/lessons/forcer-docker-compose-a-attendre-un-conteneur-en-utilisant-loutil-wait/). L’outil wait permet d’attendre qu’un conteneur soit prêt avant de faire démarrer un autre conteneur. Cela fait attendre à wp-cli que MySQL soit prêt avant de manipuler la base de données.

WP Cli Dockerfile (chemin d’accès : ./wpcli/Dockerfile):

FROM wordpress:cli

# Installer l'outil make
USER root
RUN apk add --no-cache make

# Faites attendre dockers pour que les dépendances des conteneurs soient prêtes
# Ajouter le script wait à l'image
ENV WAIT_VERSION 2.7.2
ADD https://github.com/ufoscout/docker-compose-wait/releases/download/$WAIT_VERSION/wait /wait
RUN chmod +x /wait

# Ajouter le Makefile au répertoire des scripts
ADD Makefile entrypoint.sh /scripts/
RUN chmod +x /scripts/entrypoint.sh

ENTRYPOINT [ "/scripts/entrypoint.sh" ]
USER 33:33
CMD ["wp", "shell"]

Ce Dockerfile est basé sur wordpress:cli, installe le docker-compose-wait et possède un point d’entrée, qui peut soit exécuter WP-cli ou un Makefile.

Notez que les images wordpress:latest et wpcli fonctionnent toutes les deux avec l’utilisateur www-data, mais le problème est que les [utilisateurs individuels de www-data ont des identifiants différents] (https://stackoverflow.com/questions/50999848/how-to-run-wp-cli-in-docker-compose-yml):

  • user-id=33 dans wordpress
  • user-id=82 dans wpcli

Nous devons nous assurer qu’ils utilisent tous deux le même identifiant. Ce problème peut être résolu en faisant fonctionner le wpcli avec le USER 33:33 dans le Dockerfile.

L’outil WP Cli automatise l’installation de WordPress en utilisant le Makefile suivant (chemin : ./wpcli/Makefile):

install: configure

configure:

    @echo "⚙️ Configuring WordPress parameters..."
    wp core install \
        --url=${WORDPRESS_WEBSITE_URL_WITHOUT_HTTP} \
        --title=$(WORDPRESS_WEBSITE_TITLE) \
        --admin_user=${WORDPRESS_ADMIN_USER} \
        --admin_password=${WORDPRESS_ADMIN_PASSWORD} \
        --admin_email=${WORDPRESS_ADMIN_EMAIL}

    wp option update siteurl ${WORDPRESS_WEBSITE_URL}
    wp rewrite structure $(WORDPRESS_WEBSITE_POST_URL_STRUCTURE)

En utilisant ce Makefile, l’outil WP-Cli permettra de configurer:

  • URL et titre du site web.
  • Structure de l’URL.

Faire des commandes pour la configuration automatique de WordPress

Chemin d’accès : ./Makefile

start:
    docker-compose up -d --build

healthcheck:
    docker-compose run --rm healthcheck

down:
    docker-compose down

install: start healthcheck

configure:
    docker-compose -f docker-compose.yml -f wp-auto-config.yml run --rm wp-auto-config

autoinstall: start
    docker-compose -f docker-compose.yml -f wp-auto-config.yml run --rm wp-auto-config

clean: down
    @echo "💥 Removing related folders/files..."
    @rm -rf  mysql/* wordpress/*

reset: clean

Grâce à ce Makefile, vous pourrez installer et configurer automatiquement wordpress en utilisant make autoinstall.

Étape 3. Modifier les variables d’environnement de configuration du Docker WordPress

Un fichier .env a été inclus pour définir facilement les variables d’environnement docker-compose sans avoir à modifier le fichier de configuration docker-compose.yml lui-même.

Des valeurs par défaut ont été fournies afin de permettre une mise en service rapide à des fins de test. Il appartient à l’utilisateur de les modifier pour les adapter au mieux à ses préférences de déploiement.

Ouvrez le fichier .env et mettez le contenu à jour si vous le souhaitez. Par exemple, il suffit de changer le nom du projet et votre mot de passe (pour la base de données et wordpress admin).

# Ouvrir le dossier
nano .env

Contenu:

# 1/ Nom de Project -------------------------------------------------
# Doit être en minuscules, sans espaces et sans caractères de chemins invalides.
# Sera également utilisé comme nom de la base de données de WP
COMPOSE_PROJECT_NAME=wordpress

# 2/ Base de données login et mot de passe -----------------------------------------
# Définir un utilisateur de la base de données non root si vous le souhaitez (facultatif)
DATABASE_PASSWORD=password
DATABASE_USER=root

# 3/ Pour l'autoinstallation et l'auto-configuration WordPress-------------------
WORDPRESS_WEBSITE_TITLE="My Blog"

# URL
WORDPRESS_WEBSITE_URL="http://localhost"
WORDPRESS_WEBSITE_URL_WITHOUT_HTTP=localhost
WORDPRESS_WEBSITE_POST_URL_STRUCTURE="/blog/%postname%/"

# Identification de l'administrateur du site web. Précisez un mot de passe fort
WORDPRESS_ADMIN_USER="wordpress"
WORDPRESS_ADMIN_PASSWORD="wordpress"
WORDPRESS_ADMIN_EMAIL="your-email@example.com"

# 4/ Versions des logiciels-----------------------------------------------
WORDPRESS_VERSION=latest
MARIADB_VERSION=latest
PHPMYADMIN_VERSION=latest

# 5/ Ports: Peut être changés -------------------------------------------
PHPMYADMIN_PORT=8080

# 6/ Volumes sur l'hôte--------------------------------------------------
WORDPRESS_DATA_DIR=./wordpress

# 7/ Vérification de la disponibilité des services d'hébergement (serveur mysql et woordpress)
# Temps d'attente en seconde
WAIT_BEFORE_HOSTS=5
WAIT_AFTER_HOSTS=5
WAIT_HOSTS_TIMEOUT=300
WAIT_SLEEP_INTERVAL=60
WAIT_HOST_CONNECT_TIMEOUT=5

# 8/ Utilisé seulement pour le déploiement en ligne --------------------------------------
WORDPRESS_WEBSITE_URL_WITHOUT_WWW=example.com
PHPMYADMIN_WEBSITE_URL_WITHOUT_HTTP=sql.example.com

Étape 4. Installer WordPress en utilisant docker-compose

Vous pouvez déployer automatiquement un site wordpress local sur docker en 5 minutes en utilisant les commandes suivantes. Deux options sont disponibles : commande make et commandes standard docker-compose.

# Téléchargez un exemple de fichier docker-compose pour WordPress
git clone https://github.com/kassambara/wordpress-docker-compose
cd wordpress-docker-compose

# Utilisez la commande make pour l'installation automatique et
# configuration de wordpress
make autoinstall

# Ou bien, utilisez les commandes standard de docker-compose
docker-compose up -d --build
docker-compose -f docker-compose.yml -f wp-auto-config.yml run --rm wp-auto-config
  1. Visitez votre site web wordpress à l’adresse http://localhost. Identification par défaut pour admin (http://localhost/wp-login.php):
  • Username: wordpress
  • Password: wordpress

Site internet

  1. Visitez votre base de données via phpMyAdmin à l’adresse http://localhost:8080
  • Username: root
  • Password: password

phpMyAdmin

Étape 5. Arrêt et nettoyage

# Arrêter et supprimer les conteneurs
docker-compose down
# Construire et démarrer le site wordpress
docker-compose up -d --build
# Tout réinitialiser
docker-compose down
rm -rf mysql/* wordpress/*

Notez qu’au lieu d’utiliser les commandes docker-compose ci-dessus, vous pouvez aussi utiliser facilement les lignes de commande de raccourcis make suivantes si vous avez des systèmes Unix (MAC / Linux).

# Construire et démarrer le site wordpress
make start
# Arrêtez et supprimez les conteneurs docker de WordPress
make down
# Tout réinitialiser
make reset

Résumé

Cet article décrit l’installation du docker WordPress et les fichiers de configuration associés pour installer et exécuter WordPress à l’aide du docker-compose



Version: English

(Next Lesson) WordPress – Développement local avec Docker Compose
Back to Installer WordPress avec Docker

No Comments

Give a comment

Want to post an issue with R? If yes, please make sure you have read this: How to Include Reproducible R Script Examples in Datanovia Comments

Teacher
Alboukadel Kassambara
Role : Fondateur de Datanovia
Read More