Mon WordPress sous Docker

Nous y voilà, l’heure du premier article de fond!

Bien évidemment, le premier article se doit d’être sur la conception de ce site web.

J’avais quelques exigences. Il fallait que ce soit facile d’utilisation, facilement transportable, joli et sécurisé.

Du coup, après quelques recherches, l’évidence s’est imposée: un container WordPress:

Pourquoi?

  • Je ne suis pas développeur web. Un CMS permet d’obtenir un joli résultat, sans avoir a bidouiller du HTML, du CSS et des appels en bases de données.
  • En cas de problèmes, la communauté d’utilisateurs worpdress est telle que mon problème aura été rencontré.
  • Toujours grâce à la très forte communauté, il s’agit d’un CMS très sécurisé, dans la mesure ou je n’installerai aucun plugin exotique.
  • Une image docker officielle est fournie.

Il n’en fallait pas plus pour me laisser tenter. On y va.

J’utilises docker depuis quelques années maintenant, principalement pour faire tourner des micro-services chez moi. (Vous en entendrez parler plus tard).

Pour des raisons de facilité lors de configurations complexes, docker-compose est très pratique.

Dans ce cas présent, pour mette en place ce wordpress, il faudra faire tourner 2, voire 3 services:

  • WordPress (toute la partie “front-end” évidemment).
  • Mysql (pour stocker les informations en base de données).
  • phpmyadmin (au cas ou je doive aller voir ce qu’il se passe dans la base de données à la main, mais pas trop.)

Voici mon docker-compose. On va l’expliquer juste après…

version: '3.1'
services:

  mysql:
    image: mysql:5.7
    container_name: mysql
    volumes:
      - ${PWD}/databases:/var/lib/mysql/
    environment:
     MYSQL_ROOT_PASSWORD: superpass #change
     MYSQL_USER: user #change
     MYSQL_PASSWORD: resuperpass #change
     MYSQL_DATABASE: personal #change

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: phpmyadmin
    environment:
      PMA_HOST: mysql
    ports:
      - 9090:80 #change
    depends_on:
      - mysql
      
  wordpress:
    image: wordpress
    container_name: wordpress
    restart: always
    ports:
      - 9990:80 #change
    environment:
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_USER: user #change
      WORDPRESS_DB_PASSWORD: resuperpass #change
      WORDPRESS_DB_NAME: personal #change
    volumes:
      - ${PWD}/html:/var/www/html
    depends_on:
      - mysql

Nous avons donc un fichier qui va créer trois services, dont le premier se nomme “mysql”:

  • Il est basé sur l’image officielle mysql, en version 5.7 (pour éviter des problèmes d’authentification avec la version 8).
  • La, ou les bases de données seront stockées dans le répertoire “databases” de mon serveur.
  • Les identifiants “root” et “user” sont spécifiés
  • Une base de données “personal” est crée.

Le second se nomme “phpmyadmin”:

  • Il est basé sur l’image officielle.
  • Se connecte au SGBD mysql.
  • Est accessible en localhost sur le port 9090.

Le troisième se nomme wordpress:

  • Il est basé sur l’image officielle.
  • est accessible en localhost sur le port 9990.
  • Se connecte au SGBD mysql.
  • Utilises les identifiants crées pour le service mysql.
  • Stocke les données dans le répertoire “html” du serveur.

Un petit coup de “docker-compose up” et les trois images se téléchargent toute seules, puis les services se créent… Facile non?

Mon WordPress sous Docker

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Scroll to top