Nous allons voir ici les différentes étapes pour monter un réseau de plusieurs sites Wordpress (Wordpress Multisite ou WPMU). La méthode classique est expliquée sur la page dédiée du Codex Wordpress, mais nous allons voir comment le mettre en place avec Docker.

Partons du fichier docker-compose.yml proposé sur la page Wordpress de Docker :

version: '3.1'

services:
    wordpress:
        image: wordpress
        restart: always
        ports:
            - 8080:80
        environment:
            WORDPRESS_DB_HOST: db
            WORDPRESS_DB_USER: exampleuser
            WORDPRESS_DB_PASSWORD: examplepass
            WORDPRESS_DB_NAME: exampledb

    db:
        image: mysql:5.7
        restart: always
        environment:
            MYSQL_DATABASE: exampledb
            MYSQL_USER: exampleuser
            MYSQL_PASSWORD: examplepass
            MYSQL_RANDOM_ROOT_PASSWORD: '1'

Pour dévoiler la fonction Multisite de Wordpress, nous devons rajouter dans le fichier wp-config.php la ligne define('WP_ALLOW_MULTISITE', true);. On va modifier notre fichier docker-compose.yml pour ça :

version: 3.1

services:
    wordpress:
        […]
        environment:
            […]
            WORDPRESS_CONFIG_EXTRA: |
                /* Multisite */
                define('WP_ALLOW_MULTISITE', true);

    […]

NB : WORDPRESS_CONFIG_EXTRA permet de rajouter des lignes à la fin du fichier wp-config.php.

Il faut maintenant lancer Docker Compose via docker-compose up et aller sur 0.0.0.0:8000 pour accéder aux pages d'installation de Wordpress.

Une fois cette étape passée, on accède à la console d'administration de Wordpress. Dans la colonne de droite, cliquer sur Outils > Création du réseau. Remplir les informations relatives au réseau (format des URLs, etc.) et valider.

Wordpress donne ensuite des lignes de configuration à coller dans le fichier wp-config.php de Wordpress. On utilise encore le fichier docker-compose.yml pour ça en y rajoutant les lignes de configuration données par Wordpress à la suite du WORDPRESS_CONFIG_EXTRA  :

version: 3.1

services:
    wordpress:
        […]
        environment:
            […]
            WORDPRESS_CONFIG_EXTRA: |
                /* Multisite */
                define('WP_ALLOW_MULTISITE', true);
                define('MULTISITE', true);
                define('SUBDOMAIN_INSTALL', false);
                define('DOMAIN_CURRENT_SITE', 'mydomain.local');
                define('PATH_CURRENT_SITE', '/');
                define('SITE_ID_CURRENT_SITE', 1);
                define('BLOG_ID_CURRENT_SITE', 1);

    […]

On arrête Docker Compose.

La modification de WORDPRESS_CONFIG_EXTRA ne sera pas prise en compte si on relance Docker Compose directement. Ce dernier renvoi l'erreur suivante :

WARNING: environment variable "WORDPRESS_CONFIG_EXTRA" is set, but "wp-config.php" already exists

Il faut donc supprimer le service wordpress avec la commande :

docker-compose rm wordpress

Puis, relancer Docker Compose.

Si on est en local, on peut également tomber sur l'erreur suivante :

ERREUR : Vous ne pouvez pas installer un réseau de sites avec votre adresse de serveur.

On va donc voir comme résoudre cette erreur dans cet article.