Formation PUB020 : WordPress, 2023 Travailler avec Devilbox

2.5 Réinitialiser les conteneurs Docker


Comme dans tout système, il peut arriver qu'un problème empêche un conteneur Docker de fonctionner. Ce peut être un fichier corrompu, une mauvaise configuration, etc.

Parfois, un bogue dans une version d'un serveur ou une incompatibilité avec votre système peut empêcher son bon fonctionnement. Si vous utilisez Devilbox, il est alors possible de choisir une autre image en effectuant le choix approprié dans le fichier .env (l'image choisie n'a pas de # devant son nom). 

Fichier .env

###
### 1.3 Choose MySQL Server Image
###
#MYSQL_SERVER=mysql-5.5
#MYSQL_SERVER=mysql-5.6
#MYSQL_SERVER=mysql-5.7
#MYSQL_SERVER=mysql-8.0
#MYSQL_SERVER=mariadb-5.5
#MYSQL_SERVER=mariadb-10.0
#MYSQL_SERVER=mariadb-10.1
#MYSQL_SERVER=mariadb-10.2
#MYSQL_SERVER=mariadb-10.3
#MYSQL_SERVER=mariadb-10.4
MYSQL_SERVER=mariadb-10.5
#MYSQL_SERVER=mariadb-10.6
#MYSQL_SERVER=mariadb-10.7
#MYSQL_SERVER=percona-5.5
#MYSQL_SERVER=percona-5.6
#MYSQL_SERVER=percona-5.7
#MYSQL_SERVER=percona-8.0

Peu importe la raison du mauvais fonctionnement, Devilbox vous permet de recréer les conteneurs facilement.

Où sont stockés les fichiers et les données?

Avant de poursuivre, il est important de comprendre qu'est-ce qui sera détruit avec les conteneurs.

Regardons à quel endroit physique les différents acteurs de vos sites Web sont stockés.

  • Fichiers du site Web : ils sont stockés localement sur votre ordinateur. Votre conteneur PHP ne fait qu'un lien vers votre système de fichiers local (technique Bind mounts). Ces fichiers ne seront pas affectés si le conteneur est détruit.
  • Bases de données : elles sont stockées directement dans un volume Docker qui est monté dans le conteneur de votre serveur de bases de données, tel que précisé dans l'écran d'accueil de Devilbox dans la section Data mounts.

    Par défaut, les volumes Docker ne sont pas supprimés lorsqu'un conteneur est supprimé. Vos bases de données devraient donc persister si le conteneur est détruit. 

    DataMounts

  • Configurations dans un conteneur : si vous avez effectué des configurations APRÈS la création d'un conteneur, ces configurations devront être refaites après la recréation du conteneur.

    Ce sera le cas, par exemple, si vous avez modifié le propriétaire du dossier racine de votre site Web pour permettre l'installation d'un thème WordPress à partir du tableau de bord.

Sauvegarde des bases de données

Même si vos bases de données sont stockées dans un volume Docker, c'est une bonne pratique de générer un script SQL de chacune de vos bases de données avant de détruire le conteneur. Ceci assurera que vos précieuses données pourront être regénérées si jamais un problème survenait.

Vous pouvez sauvegarder vos bases de données manuellement à partir de phpMyAdmin :

  • Ouvrez l'URL 127.0.0.1 dans votre navigateur.
  • Rendez-vous dans le menu Tools / phpMyAdmin.
  • Sélectionnez la base de données à sauvegarder puis cliquez sur Export.
  • Répétez pour chacune de vos bases de données.

La sauvegarde peut être réalisée encore plus facilement à partir des techniques que je vous présente sur la fiche « Script pour exporter l'ensemble des bases de données MySQL ».

Réinitialisation des conteneurs

Maintenant que vous avez généré les scripts SQL pour recréer vos bases de données et que vous avez bien vérifié qu'ils contenaient toutes les requêtes SQL requises, vous pouvez procéder à la réinitialisation des conteneurs.

Vous devez ouvrir une fenêtre Terminal sur votre ordinateur, vous placer dans le dossier de Devilbox puis lancer ces commandes :

Terminal

docker-compose stop
docker-compose rm -f

docker-compose up

Recréation des bases de données

En temps normal, vos bases de données devraient être encore en place après la recréation du conteneur.

Si jamais ce n'était pas le cas (fichier corrompu, changement d'image dans le fichier ,.env), vous pouvez recréer vos bases de données à l'aide de phpMyAdmin.

  • Ouvrez l'URL 127.0.0.1 dans votre navigateur.
  • Rendez-vous dans le menu Tools / phpMyAdmin.
  • Créez une base de données vide.
  • Utilisez l'option Import pour remplir la base de données à partir du script SQL généré plus tôt.
  • Répétez pour chaque base de données.

Reconfiguration des conteneurs

Si vous aviez effectué des configurations à vos conteneurs après leur génération, vous n'avez pas d'autre choix que de refaire ces configurations à la main.

Pour plus d'information

« Manage data in Docker ». Docker. https://docs.docker.com/storage/

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre