Persister des données dans les conteneurs docker
Certaines données peuvent être persistées pour faciliter l’utilisation de l’environnement de développement.
La base de donnée PostgreSQL est le point central de chacun des services ayant besoin de sauvegarder des données.
Dans le docker-compose-override.yml
qui va être utilisé dans l’environnement local de développement, on peut voir que le service postgres
possède deux volumes :
docker-entrypoint-initdb.d
: les scripts et backups de base de donnée présent dans ce dossier vont être exécutés au lancement du conteneur si la ou les bases sont inexistantes./var/lib/postgresql/data
: ici on retrouvera toutes les données sauvegardées. En avoir fait un volume permet de les persister entre chacun des lancements du conteneur. Pour repartir de zéro, il suffit de supprimer le contenu du dossier./postgres/data
(ainsi que./nextcloud/html
, nous verrons plus tard pourquoi).
Les services ci-dessous persistent des données avec le conteneur postgres.
keycloak
Le fichier ./postgres/initdb/keycloak.sql
contient les données de base nécéssaires à un usage local de l’app : un utilisateur bbb-visio-user
ayant un mot de passe Pa55w0rd
, ainsi qu’un administrateur (voir les variables d’environnement dans ./keycloak.env
)
Il est utilisé pour un projet vide, c’est pourquoi il est versionné.
nextcloud
Le fichier postgres/initdb/nextcloud.sh
permet de créer la base de donnée utilisable par le service nextcloud
.
On retrouvera ensuite les fichiers Nextcloud dans le volume /var/lib/postgresql/data
du service postgres
.
Lorsque le projet vide est lancé, le programme d’installation de Nextcloud s’exécute. Nextcloud a donc besoin de cette base de données, mais aussi de vérifier qu’il n’a pas déjà été installé. Ce script vérifie l’existence de /var/www/html/version.php
et s’il n’existe pas, installe Nextcloud dans ce dossier /var/www/html
. C’est pourquoi le service nextcloud
possède le volume html
afin de garder un Nextcloud fonctionnel entre lancements de conteneurs.
Une bonne façon de désinstaller Nextcloud est donc de supprimer le contenu du dossier ./nextcloud/html
.
postgres
La base postgres est également utilisée pour sauvegarder le métier de B3Desk, les meetings et leur récurrence entre autres.
Le fichier ./postgres/initdb/bbb-visio.sh
va permettre de créer la base de données requise pour B3Desk lors du premier lancement.
Par la suite, comme le service postgres
a un volume sur /var/lib/postgresql/data
, toutes les modifications entre lancements de conteneurs seront persistées pour un usage local. Pour supprimer ces données, il suffit à nouveau de vider le contenu du dossier ./postgres/data
.