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.
@+