Déploiement de WordPress, Nginx et MySQL dans des Conteneurs Docker
Introduction Le déploiement de WordPress avec Nginx et MySQL dans des conteneurs Docker permet de bénéficier de l'isolation des services, de la portabilité et de la simplicité de gestion des…

Introduction
Le déploiement de WordPress avec Nginx et MySQL dans des conteneurs Docker permet de bénéficier de l'isolation des services, de la portabilité et de la simplicité de gestion des environnements. Cet article vous guidera à travers les étapes de configuration et de déploiement de cette architecture.
Étape 1 : Préparer le fichier docker-compose.yml
Créez un fichier nommé docker-compose.yml dans votre répertoire de travail. Ce fichier contiendra la configuration pour les trois services : WordPress, Nginx et MySQL.
Voici un exemple de configuration
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpresspassword
wordpress:
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpresspassword
WORDPRESS_DB_NAME: wordpress
depends_on:
- db
nginx:
image: nginx:latest
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- wordpress_data:/var/www/html
ports:
- "80:80"
depends_on:
- wordpress
volumes:
db_data:
wordpress_data:
En cas de conflit de port, changer de port. Ex 8080:80
Étape 2 : Configurer Nginx
Créez un fichier de configuration Nginx nommé nginx.conf dans votre répertoire de travail :
events {
worker_connections 4096; ## Default: 1024
}
http {
server {
listen 80;
location / {
proxy_pass http://wordpress;
proxy_set_header Host $host;
}
}
}
Une coniguration plus optimisée nginx.conf
events {
worker_connections 4096; ## Default: 1024
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
client_max_body_size 100M; # Augmente la taille maximale des uploads
# Paramètres de compression
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# Paramètres de cache
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_cache_background_update on;
proxy_cache_lock on;
# Paramètres de sécurité
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "no-referrer-when-downgrade";
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline';";
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html index.htm;
# Serveur de cache pour les fichiers statiques
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
add_header Cache-Control "public, no-transform";
}
# Proxy pour WordPress
location / {
proxy_pass http://wordpress;
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;
proxy_cache_bypass $http_upgrade;
proxy_cache WORDPRESS;
}
# Interdire l'accès aux fichiers sensibles
location ~* /(?:uploads|files)/.*\.php$ {
deny all;
}
# Gestion des erreurs
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}
L'arborescence

Étape 3 : Démarrer les services
Dans le répertoire où se trouvent vos fichiers docker-compose.yml et nginx.conf, exécutez la commande suivante pour démarrer les services :
docker compose up -d

Étape 4 : Vérifier l'installation
Accédez à http://localhost:80 dans votre navigateur web. Vous devriez voir l'écran d'installation de WordPress.

Étape 5 : Nettoyer l'environnement
docker compose down -v
Illustration de l'Architecture
Voici une illustration de l'architecture déployée :

-
-
Conteneur MySQL :
-
Héberge la base de données MySQL nécessaire pour WordPress. Il utilise un volume pour stocker les données de manière persistante. ll sauvegarde ses fichiers dans un volume.
-
-
Conteneur WordPress :
-
Héberge l'application WordPress. Il est configuré pour se connecter au conteneur MySQL pour accéder à la base de données. Il est lié à un volume pour la persistance des données.
-
-
Conteneur Nginx :
-
Sert de serveur web pour WordPress. Il est configuré pour rediriger le trafic HTTP vers le conteneur WordPress. Il est également lié au même volume que wordpress pour servir les fichers.
-
-
Utilisateur :
-
Accède à WordPress via le navigateur web en utilisant l'URL http://docker_host_ip:port.
Conclusion
Cette configuration Docker offre une solution puissante et flexible pour déployer WordPress avec Nginx et MySQL, tout en assurant une isolation et une gestion simplifiée des services. Profitez de votre nouvelle configuration Dockerisée pour WordPress !
N'hésitez pas à laisser des commentaires si vous avez des questions ou des suggestions !
Commentaires
- coolibra05 juil. 2024
N'hésitez pas à laisser des commentaires si vous avez des questions ou des suggestions !

