Configuration Docker đ de l'application EZ Stats
EZStats-docker est un outil en charge des statistiques d'usages Ă l'aide dâezPAARSE et ezMESURE Cet outil est destinĂ© Ă un usage interne de l'Abes.
Ce dĂ©pĂŽt contient la configuration docker đł pour dĂ©ployer l'application EZStats en local sur le poste d'un dĂ©veloppeur, ou bien sur les serveurs de test et prod.
Les URLs correspondantes aux déploiements en local, test et prod sont les suivantes :
- local :
- dev :
- test :
- prod :
Le téléchargement de fichier depuis WebDav, par Windows (lecteur réseau) est limité à 47 Mo.
Si le fichier est plus gros, il faut passer par un navigateur web et faire "Enregistrer la cible sous..."
Disposer de :
docker
docker-compose
- Déployer la configuration docker dans un répertoire :
# La variable $INSTALL est pour nos serveurs de dev/test/prod, /opt/pod . En local, le chemin peut ĂȘtre diffĂ©rent (ex : si on utilise Windows).
cd $INSTALL
git clone https://github.com/abes-esr/ezstats-docker.git
- Configurer l'application depuis l'exemple du fichier
.env-dist
(ce fichier contient la liste des variables) :
cd $INSTALL/ezstats-docker/
cp .env-dist .env
personnaliser alors le contenu du .env
- Créer le répertoire contenant les logs (défini dans le .env par les variables :
EZSTATS_VOLUME_DEVICE et EZSTATS_LOGSTASH_VOLUME_DEVICE)
Ce répertoire de log (dans le .env-dist, $INSTALL/ezstats-logs) doit avoir 2 sous répertoires : data/thesesfr/logs et data/thesesfr/results.
Le répertoire data/thesesfr/logs contiendra les fichiers de logs et le répertoire data/thesesfr/results contiendra les fichiers générés par EZPaarse
Erreur possible si le répertoire n'est pas trouvé :
"Error response from daemon : failed to mount local volume :
mount /run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu/42282d145e43b6c89fdd0323e81c2d6163d636aedc75eb507a698be98fdf5b7b :/var/lib/docker/volumes/ezstats-docker_ezstats-logs/_data, flags : 0x1000 : no such file or directory"
Alors il faut vérifier que le répertoire contenant les logs est bien existant.
- Retours Ă la ligne Ă changer si installation sous Windows :
Ouvrir avec un Ă©diteur de texte le fichier webdav/docker-entrypoint.sh et changer "Windows CR+LF" en "UNIX LF" pour le fichier : webdav/docker-entrypoint.sh
# pour démarrer l'application (ou pour appliquer des modifications faites dans $INSTALL/ezstats-docker/.env)
cd $INSTALL/ezstats-docker/
docker-compose up -d
Remarque : retirer le -d
pour voir passer les logs dans le terminal et utiliser alors CTRL+C pour stopper l'application
cd $INSTALL/ezstats-docker/
# pour stopper l'application
docker-compose stop
# pour redémarrer l'application
docker-compose restart
# pour supprimer les données :
docker-compose down -v
# pour visualiser les logs de l'appli
cd $INSTALL/ezstats-docker/
docker-compose logs -f --tail=100
Cela va afficher les 100 derniÚre lignes de logs générées par l'application et toutes les suivantes jusqu'au CTRL+C qui stoppera l'affichage temps réel des logs.
Pour configurer l'application, vous devez créer et personnaliser un fichier $INSTALL/ezstats-docker/.env
(cf section Installation). Les paramĂštres Ă placer dans ce fichier .env
sont indiqués dans le fichier .env-dist
Pour ajuster l'allocation de ressources pour les conteneurs (par exemple, mémoire, CPU), vous pouvez définir la valeur des variables d'environnement suivantes dans votre fichier .env
:
EZSTATS_MEM_LIMIT
: Mémoire allouée au conteneur ezpaarse (par exemple: "512m" pour 512 Mo), valeur par défaut "5g".EZSTATS_MEMSWAP_LIMIT
: Quantité totale de mémoire et de swap que le conteneur est autorisé à utiliser. Si vous définissez cette valeur à 0, cela signifie que le swap est désactivé pour le conteneur.EZSTATS_CPU_LIMIT
: CPU alloué au conteneur ezpaarse (par exemple: "0.5" pour allouer 50% d'un CPU), valeur par défaut "5".
Ces valeurs ne sont que des exemples. Ajustez-les selon vos besoins et les ressources disponibles sur votre machine ou votre serveur.
Les objectifs des déploiements continus de EZStats sont les suivants (cf poldev) :
- git push sur la branche
develop
provoque un déploiement automatique sur le serveurdiplotaxis6-dev
- git push (le plus couramment merge) sur la branche
main
provoque un déploiement automatique sur le serveurdiplotaxis6-test
- git tag X.X.X (associé à une release) sur la branche
main
permet un déploiement (non automatique) sur le serveurdiplotaxis6-prod
EZStats est déployé automatiquement en utilisant l'outil WatchTower. Pour permettre ce déploiement automatique avec WatchTower, il suffit de positionner à false
la variable suivante dans le fichier /opt/pod/ezstats-docker/.env
:
EZSTATS_WATCHTOWER_RUN_ONCE=false
Le fonctionnement de watchtower est de surveiller réguliÚrement l'éventuelle présence d'une nouvelle image docker de ezstats-wikibase
, si oui, de rĂ©cupĂ©rer l'image en question, de stopper le ou les les vieux conteneurs et de crĂ©er le ou les conteneurs correspondants en rĂ©utilisant les mĂȘmes paramĂštres ceux des vieux conteneurs. Pour le dĂ©veloppeur, il lui suffit de faire un git commit+push par exemple sur la branche develop
d'attendre que la github action build et publie l'image, puis que watchtower prenne la main pour que la modification soit disponible sur l'environnement cible, par exemple la machine diplotaxis6-dev
.
Le fait de passer EZSTATS_WATCHTOWER_RUN_ONCE
à false va faire en sorte d'exécuter périodiquement watchtower. Par défaut cette variable est à true
car ce n'est pas utile voir cela peut générer du bruit dans le cas d'un déploiement sur un PC en local.
Les éléments suivants sont à sauvegarder:
$INSTALL/ezstats-docker/.env
: contient la configuration spécifique de notre déploiement$INSTALL/ezstats-docker/ezstats-logs
: contient les logs quotidiens
/!\ A noter : le répertoire $INSTALL/ezstats-docker/ezstats-logs
est un montage NFS.
Réinstallez l'application EZStats depuis la procédure d'installation ci-dessus et récupéré depuis les sauvegardes le fichier .env
et placez le dans $INSTALL/ezstats-docker/.env
sur la machine qui doit faire repartir EZStats.
Relancer le traitement de tous les logs :
Lancer la commande :
cd $INSTALL/ezstats-docker/
Pour récupérer et démarrer la derniÚre version de l'application vous pouvez le faire manuellement comme ceci :
docker-compose pull
docker-compose up
Le pull
aura pour effet de télécharger l'éventuelle derniÚre images docker disponible pour la version glissante en cours (ex: develop
ou main
). Sans le pull c'est la derniÚre image téléchargée qui sera utilisée.
Ou bien lancer le conteneur ezstats-watchtower
qui le fera automatiquement toutes les quelques secondes pour vous.
(lien pour modifier le schéma - droits requis)
Les images d'ezstats-batch-theses et d'ezstats-batch-logs sont ici :
La configuration de BiblioMap pour theses.fr est ici :
Les codes sources d'EZPaarse (et lib NodeJS), EZMesure (et lib NodeJS) et EZReport (maintenus par l'INIST) sont ici :