Configuration docker 🐳 pour déployer l'application de gestion des accès de licencesnationales. Ce README fait également office de fiche d'exploitation.
Les URL de l'applications sur les différents environnements :
- prod :
- https://acces.licencesnationales.fr/ : URL publique de licencesnationales-front
- https://acces.licencesnationales.fr/v1/ : URL publique de licencesnationales-web
- http://diplotaxis3-prod.v102.abes.fr:10401/ : URL interne de licencesnationales-front (accès via VPN)
- http://diplotaxis3-prod.v102.abes.fr:10400/v1/ : URL interne de licencesnationales-web (accès via VPN)
- test :
- https://acces-test.licencesnationales.fr/ : URL publique de licencesnationales-front (accès via IP Renater)
- https://acces-dev.licencesnationales.fr/v1/ : URL publique de licencesnationales-web (accès via IP Renater)
- http://diplotaxis3-test.v202.abes.fr:10401/ : URL interne de licencesnationales-front (accès via VPN)
- http://diplotaxis3-test.v202.abes.fr:10400/v1/ : URL interne de licencesnationales-web (accès via VPN)
- dev :
- https://acces-dev.licencesnationales.fr/ : URL publique de licencesnationales-front (accès via VPN)
- https://acces-dev.licencesnationales.fr/v1/ : URL publique de licencesnationales-web (accès via VPN)
- http://diplotaxis3-dev.v212.abes.fr:10401/ : URL interne de licencesnationales-front (accès via VPN)
- http://diplotaxis3-dev.v212.abes.fr:10400/v1/ : URL interne de licencesnationales-web (accès via VPN)
- local :
- http://127.0.0.1:10401/ : URL interne de licencesnationales-front
- http://127.0.0.1:10400/v1/ : URL interne de licencesnationales-web
Disposer de :
docker
docker-compose
Déployer la configuration docker dans un répertoire :
# adaptez /opt/pod/ avec l'emplacement où vous souhaitez déployer l'application
cd /opt/pod/
git clone https://github.com/abes-esr/licencesnationales-docker.git
Configurer l'application depuis l'exemple du fichier .env-dist
(ce fichier contient la liste des variables avec des explications et des exemples de valeurs) :
cd /opt/pod/licencesnationales-docker/
cp .env-dist .env
# personnaliser alors le contenu du .env
Note : les mots de passe de la base de donnée xml de test ne sont pas présent dans le fichier au moment de la copie. Vous devez les renseigner manuellement en editant le fichier .env dans la console avec nano par exemple
Démarrer l'application :
cd /opt/pod/licencesnationales-docker/
docker-compose up -d
Pour démarrer l'application :
cd /opt/pod/licencesnationales-docker/
docker-compose up -d
Pour arrêter l'application :
cd /opt/pod/licencesnationales-docker/
docker-compose stop
Pour vérifier que l'application est démarrée, on peut consulter l'état des conteneurs :
cd /opt/pod/licencesnationales-docker/
docker-compose ps
Pour vérifier que l'application est bien lancée, on peut consulter les logs :
cd /opt/pod/licencesnationales-docker/
docker-compose logs --tail=50 -f
A noter que ces logs sont envoyées automatiquement au puits de log de l'Abes à l'aide du client filebeat installé sur le noeud docker et à la configuration que nous lui indiquons dans les labels.
Pour sauvegarder l'application, il faut :
- Sauvegarder la base de données (base Oracle sur les serveurs orpin)
- Sauvegarder le fichier
/opt/pod/licencesnationales-docker/.env
(les autres fichiers sont versionnés sur le github delicencesnationales-docker
)
Pour restaurer l'application, il faut :
- restaurer la base de données
- réinstaller/redéployer l'application (cf plus haut la section installation) en récupérant le fichier
/opt/pod/licencesnationales-docker/.env
depuis les sauvegardes.
Les objectifs des déploiements continus de licencesnationales sont les suivants (cf poldev) :
- git push sur la branche
develop
provoque un déploiement automatique sur le serveurdiplotaxis1-dev
- git push (le plus couramment merge) sur la branche
main
provoque un déploiement automatique sur le serveurdiplotaxis1-test
- git tag X.X.X (associé à une release) sur la branche
main
permet un déploiement (non automatique) sur le serveurdiplotaxis1-prod
Licencesnationales 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/licencesnationales-docker/.env
:
LN_WATCHTOWER_RUN_ONCE=false
Le fonctionnement de watchtower est de surveiller régulièrement l'éventuelle présence d'une nouvelle image docker de licencesnationales-web
, licencesnationales-batch
et licencesnationales-front
, 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 diplotaxis1-dev
.
Le fait de passer LN_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.
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-api
ou main-api
). Sans le pull c'est la dernière image téléchargée qui sera utilisée.
Ou bien lancer le conteneur licencesnationales-watchtower
qui le fera automatiquement toutes les quelques secondes pour vous.
(lien pour modifier le schéma)
A noter que les images docker de licencesnationales sont générées à partir des codes open sources disponibles ici :
- https://github.com/abes-esr/licencesnationales-back/ via la chaine d'intégration continue build-test-pubtodockerhub.yml qui pousse les images sur dockerhub ici
- https://github.com/abes-esr/licencesnationales-front/ via la chaine d'intégration continue build-test-pubtodockerhub.yml qui pousse les images sur dockerhub ici