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.