Il existe plusieurs tutos sur la façon de configurer un nouveau site WordPress avec docker. Cependant, personne ne dit vraiment comment déplacer un site WordPress existant dans un conteneur Docker.

Pour suivre ce tuto, vous devez avoir :

  • Un environnement docker fonctionnel,
  • Nginx installé dessus

Vous pouvez voir ici comment installer docker :

Etape 1 :

Préparer à exporter le site WordPress :

  • Archiver le site (site.zip)

#zip -r site.zip /var/www/html/wordpress

  • Exporter WordPress base de donnée

#mysqldump –routines -u username -p nom_de_wordpress_db > dbexport.sql

  • Le nom de wordpress bd (nom_de_wordpress_db)
  • Le mot de passe de bd (pwd_wordpress_databse)
  • L’utilisateur de bd (user_wordpress_db)

Etape 2 :

Préparer l’environnement docker :

  • J’utiliserai safozi.com comme nouveau nom de domaine pour WordPress sur mon docker
  • J’utiliserai 10.10.10.10 comme adresse IP du serveur.
  • Je travaille sur un ubuntu 18.04

Installez Nginx sur le serveur. Utilisera Nginx comme proxy inverse pour notre conteneur docker, nous devons donc l’installer à l’aide de la commande suivante.

#apt install nginx

Configurer le code source du site

Assurez-vous que le dossier /var/www/html/safozi.com/ est vide, puis créez un dossier src / à l’intérieur pour contenir notre code de site. Vous pouvez faire les deux avec les commandes suivantes :

#rm -r /var/www/html/safozi.com/*

#mkdir -pv /var/www/html/safozi.com/src

Nous allons maintenant télécharger l’archive du site que nous avons créée sur notre site :

#cd /var/www/html/safozi.com

#wget “http://nom_de_domaine_wordpress_org/site.zip” –no-check-certificate

Ensuite, nous décompresserons l’archive site.zip dans le dossier src :

#unzip site.zip -d src/

Configurer la base de donnée de site :

WordPress nécessite une base de données pour fonctionner, et puisque nous voulons conserver nos données, nous allons stocker les données dans un volume de répertoire que nous monterons sur notre conteneur docker.

Ensuite, nous allons créer le dossier /var/www/html/safozi.com/database pour contenir les données et la configuration de notre base de données.

#mkdir -pv /var/www/example.com/database

Nous allons stocker nos données de base de données dans le dossier database / data, donc nous les créons en utilisant la commande suivante

#mkdir -pv /var/www/example.com/database/data

Le conteneur MySQL exécutera tout fichier .sh, .sql ou .sql.gz dans le dossier /docker-entrypoint-initdb.d à l’intérieur du conteneur. Nous allons donc placer notre vidage SQL dans un dossier et le monter dans le dossier /docker-entrypoint-initdb.d du conteneur.

#mkdir -pv /var/www/example.com/database/initdb.d

#cd /var/www/example.com/database/initdb.d

#wget “http:// nom_de_domaine_wordpress_org /dbexport.sql” –no-check-certificate

Créer des conteneurs Docker à l’aide de docker-compose :

Maintenant nous allons extraire une nouvelle image WordPress dans un conteneur, donc pour cela nous devons créer un fichier docker-compose.

#Vi /var/www/example.com/docker-compose.yml

version: ‘2’
services:
safozi_db:
image: mysql:5.7
container_name: safozi_db
volumes:
– ./database/data:/var/lib/mysql
– ./database/initdb.d:/docker-entrypoint-initdb.d
restart: always
environment:
MYSQL_ROOT_PASSWORD: aieububsnlVUOBWHLEINA # any random string will do
MYSQL_DATABASE: nom_de_wordpress_db # le nom de mysql db
MYSQL_USER: user_wordpress_db # le nom d’utilisateur
MYSQL_PASSWORD: pwd_wordpress_databse # mot de pass d’utilisateur db

safozi:
depends_on:
– safozi_db
image: wordpress:php7.1 # on utilise l’image php7.1
container_name: safozi
ports:
– “1234:80”
restart: always
links:
– safozi_db:mysql
volumes:
– ./src:/var/www/html

Note : le docker compose est un fichier sensible, même un espace supplémentaire pourrait vous générer une erreur.

Maintenant nous exécutons le conteneur docker :

#cd /var/www/html/safozi.com

#docker-compose up –d

Aussi, nous devons utiliser nginx pour rediriger le trafic du conteneur vers le monde extérieur :

#cd /etc/nginx/site-available

#vi safozi.com.conf

server {
listen 80;
listen [::]:80;

server_name safozi.com www.safozi.com; //exemple de nouveaux nom de domaine location / {

proxy_pass http://0.0.0.0:1234; //num de port conteneur va être rédiger avec 80

proxy_set_header Accept-Encoding “”;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

}

}

Activer le site :

#ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

Redémarrer le serveur web Nginx :

#/etc/init.d/nginx reload

Vous pouvez accéder à votre site Web: http://safozi.com/src

RQ : Si vous essayez de visiter le site maintenant, vous verrez probablement une erreur de base de données. Pour résoudre ce problème, modifiez le fichier wp-config dans /var/www/html/safozi.com/src/wp-config.php et modifiez.

/ ** Nom d’hôte MySQL * /

define (‘DB_HOST’, ‘localhost’);

à

/ ** Nom d’hôte MySQL * /

définir (‘DB_HOST’, ‘mysql’);

Aussi, juste au-dessus de /* That’s all, stop editing! Happy blogging. */, ajoutez :

if (isset ($ _ SERVER [‘HTTP_X_FORWARDED_PROTO’])

     && $ _SERVER [‘HTTP_X_FORWARDED_PROTO’] === ‘https’) {

     $ _SERVER [‘HTTPS’] = ‘activé’;

}

Toutes nos félicitations! Vous devriez pouvoir visiter votre site et voir que tout fonctionne correctement.