Déploiement en production - ets-cfuhrman-pfe/EvalueTonSavoir GitHub Wiki
Nous avons choisi d'exécuter les composantes de cette application avec Docker, car cela simplifie le processus de gestion des processus d'application.
Voici un diagramme de déploiement expliquant la relation des composantes et comment les images Docker sont créées et déployées dans un serveur.
Les STI nous a fourni un serveur avec les spécifications suivantes :
- Ubuntu 22.04 LTS
- CPU : 4 cœurs
- RAM : 8 Go
- HDD : 100 Go
- Certificat SSL
Les STI ont déjà effectué la configuration initiale de la machine selon leurs normes de mise en place d'un serveur pour assurer la bonne maintenance et sécurité au sein de leur infrastructure. Cette configuration inclut un utilisateur non root.
Vous aurez également besoin d'un compte Docker Hub, ou vous pouvez simplement créer une PR sur le projet principal et elle sera déployée automatiquement.
Connectez-vous avec les informations d'identification de l'ETS :
ssh <email>@<IP>
Tout d'abord, mettez à jour votre liste existante de packages :
sudo apt update
Ensuite, installez quelques packages prérequis qui permettent à apt d'utiliser des packages via HTTPS :
Warning
Si vous voyez l'erreur suivante, ARRÊTEZ. Contactez les STI pour résoudre le problème.
Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 10703 (apt)
sudo apt install apt-transport-https ca-certificates curl software-properties-common
Ajoutez la clé GPG du référentiel Docker officiel à votre système :
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Ajoutez le référentiel Docker aux sources APT :
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Mettez à jour à nouveau votre liste existante de packages pour que l'ajout soit reconnu :
sudo apt update
Assurez-vous que vous vous apprêtez à installer à partir du référentiel Docker plutôt que du référentiel Ubuntu par défaut :
apt-cache policy docker-ce
Vous verrez une sortie comme celle-ci, bien que le numéro de version pour Docker puisse être différent :
docker-ce:
Installed: (none)
Candidate: 5:26.0.0-1~ubuntu.22.04~jammy
Version table:
5:26.0.0-1~ubuntu.22.04~jammy 500
500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
5:25.0.5-1~ubuntu.22.04~jammy 500
500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
...
Installez Docker :
sudo apt install docker-ce
Vérifiez que Docker fonctionne :
sudo systemctl status docker
La sortie devrait être similaire à ce qui suit, montrant que le service est actif et en cours d'exécution :
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-04-05 13:20:12 EDT; 1min 24s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 19389 (dockerd)
Tasks: 10
Memory: 28.7M
CPU: 172ms
CGroup: /system.slice/docker.service
└─19389 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
...
Note
Si Docker ne roule pas, p.ex. vous voyez :
○ docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Vous devez démarrer Docker :
sudo systemctl start docker
Créez un répertoire d'installation Docker Compose :
mkdir -p ~/.docker/cli-plugins/
Obtenez Docker Compose :
curl -SL https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
Ensuite, définissez les permissions correctes pour que la commande docker compose soit exécutable :
chmod +x ~/.docker/cli-plugins/docker-compose
Pour vérifier que l'installation a réussi, vous pouvez exécuter :
docker compose version
Commencez par créer un nouveau répertoire dans votre dossier personnel :
mkdir ~/EvalueTonSavoir
Puis déplacez-vous dans le répertoire :
cd ~/EvalueTonSavoir
Créez un fichier docker-compose.yaml
à partir du dépôt GitHub :
curl -SL https://raw.githubusercontent.com/ets-cfuhrman-pfe/EvalueTonSavoir/main/docker-compose.yaml -o docker-compose.yaml
Note
Avant de continuer, veuillez noter qu'il est crucial de mettre à jour les variables d'environnement dans le script, car les valeurs actuelles sont des modèles génériques. Assurez-vous de personnaliser ces variables selon les besoins spécifiques de votre environnement avant d'exécuter le script.
Avec le fichier docker-compose.yml en place, vous pouvez maintenant exécuter Docker Compose pour démarrer votre environnement :
sudo docker compose up -d
Vérifiez que les services fonctionne :
sudo docker ps -a
Note
Changement au niveau de l'authentification SSO Il faut s'assurer dans le docker-compose de pointer la config auth au bon endroit. Service backend sous volumes:
backend:
...
volumes:
- ./[path in evalsa server]:/usr/src/app/serveur/config/auth_config.json
Note
Idéalement on attends quelques mins avant de faire la commande pour l'update des images dans dockerhub Les images doivent rouler pour faire cette commande
docker-compose.yaml
a un service watchtower-once
qui permet de chercher la dernière version des images (utile si on a créé une nouvelle image et on veut que ce soit déployée tout de suite). Sachez que cette commande va interrompre les connexions en cours.
sudo docker compose up watchtower-once
Warning
Si vous avez des problèmes avec docker il faut faire la commande:
sudo systemctl restart docker
sudo docker compose down
sudo docker compose up -d
sudo docker ps
sudo docker logs -f <nom-image>
Le <nom-image>
correspond à backend
, frontend
, mongo
, etc.
sudo systemctl restart docker
Félicitations ! Vous avez maintenant avec succès configuré et lancé EvalueTonSavoir sur votre serveur, prêt à être utilisé.