Créer son site web sous Docker - Etape 2 - La construction avec wordpress, mariadb et matomo
Créer son site web sous Docker - La construction avec wordpress, mariadb et matomo - Etape 2
Bonjour,
Le prérequis pour ce guide et d’avoir suivi l’article précédent concernant les fondations.
1- On commence par créer le répertoire ou on va assurer la persistance des données pour votre site web:
mkdir sitewebwp cd sitewebwp mkdir wp-content mkdir mariawp_db nano docker-compose.yml
Le contenu du fichier est le suivant:
version: "3.5"
services:
mariawp_db:
# https://hub.docker.com/_/mariadb/
image: mariadb:latest
restart: unless-stopped
container_name: mariawp_db
networks:
- backend
volumes:
# Ensure the database persists between restarts.
- ./mariawp_db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: dbpass
MYSQL_DATABASE: dbname
MYSQL_USER: dbuser
MYSQL_PASSWORD: dbpass
labels:
- "traefik.enable=false"
wp_phpmyadmin:
# Navigate to http://example.com/phpmyadmin/ to manage your MySQL databases (don't forget the last forward slash).
# https://hub.docker.com/r/phpmyadmin/phpmyadmin/
image: phpmyadmin/phpmyadmin:latest
depends_on:
- mariawp_db
restart: unless-stopped
container_name: wp_phpmyadmin
networks:
- backend
- frontend
ports:
- "18080:80"
volumes:
# Install our own php.ini, which can be customized.
- ./php.ini:/usr/local/etc/php/php.ini
environment:
PMA_HOST: mariawp_db:3306
PMA_ABSOLUTE_URI: /phpmyadmin/
MYSQL_ROOT_PASSWORD: dbpass
labels:
- "traefik.docker.network=frontend"
- "traefik.enable=true"
- "traefik.frontend.rule=Host:votresite.com; PathPrefixStrip:/phpmyadmin/"
- "traefik.port=80"
- "traefik.backend=phpmyadmin_wp"
- "traefik.entryPoints=http,https"
# Remove the next line if you don't want a browser login prompt.
- "traefik.frontend.auth.basic=votrepseudo:passàlacon"
wp:
# https://hub.docker.com/_/wordpress/
image: wordpress:latest
depends_on:
- mariawp_db
- rediswp
restart: unless-stopped
container_name: wp
networks:
- backend
- frontend
volumes:
# Ensure WP themes/plugins/uploads persist between restarts.
# - ./wp-content:/var/www/html/wp-content
# Install our own php.ini, which can be customized.
- ./php.ini:/usr/local/etc/php/php.ini
# Ensure WP persist between restarts.
- ./wordpress:/var/www/html
environment:
WORDPRESS_DB_HOST: mariawp_db:3306
WORDPRESS_DB_NAME: dbname
WORDPRESS_DB_USER: dbuser
WORDPRESS_DB_PASSWORD: dbpass
WORDPRESS_TABLE_PREFIX: dbprefix_
labels:
- "traefik.docker.network=frontend"
- "traefik.enable=true"
- "traefik.frontend.rule=Host:votresite.com"
- "traefik.port=80"
- "traefik.entryPoints=http,https"
- "traefik.backend=arkywp"
# Matomo : Web site analytics instead of google / No external data-servers
# https://hub.docker.com/_/matomo
matomowp:
image: matomo:latest
depends_on:
- mariawp_db
- rediswp
restart: unless-stopped
container_name: matomowp
networks:
- frontend
- backend
volumes:
- ./matomo:/var/www/html
# Install our own php.ini, which can be customized.
- ./php.ini:/usr/local/etc/php/php.ini
environment:
MATOMO_DATABASE_HOST: mariawp_db:3306
MATOMO_DATABASE_TABLES_PREFIX: matowp_
MATOMO_DATABASE_USERNAME: dbuser
MATOMO_DATABASE_PASSWORD: dbpass
MATOMO_DATABASE_DBNAME: dbname
TZ: Europe/Paris
labels:
- "traefik.docker.network=frontend"
- "traefik.enable=true"
- "traefik.frontend.rule=Host:votresite.com; PathPrefixStrip:/matomo/"
- "traefik.port=80"
- "traefik.protocol=http"
- "traefik.backend=matomo_wp"
# Redis : cached server
# https://hub.docker.com/_/redis
# Redis desktop manager
# https://sourceforge.net/projects/redis-desktop-manager.mirror/files/0.9.3/redis-desktop-manager-0.9.3.817.exe/download?use_mirror=freefr
rediswp:
image: redis:latest
restart: unless-stopped
container_name: rediswp
command: ["redis-server", "--appendonly", "yes"]
networks:
- backend
volumes:
- ./redis:data
ports:
- "6379:6379"
labels:
- "traefik.enable=false"
networks:
frontend:
external: true
backend:
external: true
2- On va maintenant créer le fichier php.ini pour la configuration de wordpress
nano php.ini
Le contenu est le suivant:
# Feel free to add and change any settings you want in here. upload_max_filesize = 128M post_max_size = 128M max_execution_time = 180 memory_limit = 256M
3- Pour lancer tout ça il faut utiliser la commande docker classique :
docker-compose up -d --build
4- Comme il risque d’y avoir des problèmes pour mettre à jour les plugins / copier des fichiers dans la nouvelle installation wordpress je vous conseille de faire :
sudo chown -R www-data:www-data /home/votrepseudo/sitewebwp/wp-content sudo chmod -R a+rwx /home/votrepseudo/sitewebwp/wp-content
5- Les explications:
- Votre base de données c’est mariadb. Les données de votre site web seront stockées dans cette base.
- Phpmyadmin permet de gérer votre base de données si il y a besoin. Normalement vous n’en aurez jamais besoin sauf peut être pour faire une sauvegarde/restauration. Le dashboard sera disponible sur https://votresite.com/phpmyadmin/
- WordPress : votre site web qui sera disponible sur https://votresite.com. Grâce à l’étape 1, vous aurez un certificat SSL via Let’s encrypt qui sera renouvelé automatiquement. Un problème de moins à gérer ! A noter que dans la configuration que je propose, la totalité de votre site passe en « persistant ». Ca me parait beaucoup plus cohérent que de juste mettre le répertoire Plugins comme je peux le voir dans toutes les installations. Ca permet de garder la main facilement sur votre site, de faire des modifications si nécessaire et de faciliter les sauvegardes.
- Matomo permet de remplacer google analytics pour avoir les statistiques de votre site. Tout est absolument géré en local et donc vos données ne vont pas chez nos amis les GAFAM. Le dashboard est disponible à l’adresse https://votresite.com/matomo/
- Redis : solution qui permet de mettre en cache les pages de votre site. C’est totalement optionnel et si votre site n’a qu’un faible trafic c’est inutile.
6- Quelques conseils maintenant que la magie a opérée et que vous êtes sur le web:
- Voici la liste des plugins à mettre en place sur votre installation wordpress
- Pensez à sécuriser votre site web
- Faites des sauvegardes ! Je fais par exemple des sauvegardes régulières de ma VM qui propulse mon site web et de ma base de données.
Voila, j’espère que ces guides vous seront utiles pour lancer votre wordpress sous docker ! N’hésitez pas à faire du try & error, les VMs et docker c’est génial pour ça, il n’y a rien de rédhibitoire.
@+