Skip to content

Configuration Docker 🐋 de l'application EZStats

License

Notifications You must be signed in to change notification settings

abes-esr/ezstats-docker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ezstats-docker

Configuration Docker 🐋 de l'application EZ Stats

Docker Pulls

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.

URLs d'EZStats

Les URLs correspondantes aux déploiements en local, test et prod sont les suivantes :

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..."

Prérequis

Disposer de :

  • docker
  • docker-compose

Installation

  • 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

DĂ©marrage et arrĂȘt

# 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 

Supervision

# 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.

Configuration

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

Allocation de ressources pour les conteneurs

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.

DĂ©ploiement continu

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 serveur diplotaxis6-dev
  • git push (le plus couramment merge) sur la branche main provoque un dĂ©ploiement automatique sur le serveur diplotaxis6-test
  • git tag X.X.X (associĂ© Ă  une release) sur la branche main permet un dĂ©ploiement (non automatique) sur le serveur diplotaxis6-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.

Sauvegardes

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.

Restauration depuis une sauvegarde

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/

Mise Ă  jour de la derniĂšre version

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.

Architecture

schéma d'architecture

(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 :

About

Configuration Docker 🐋 de l'application EZStats

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •