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

Créer son site web sous Docker - Etape 2 - La construction avec wordpress, mariadb et matomo

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.

@+