2024-11-27 14:47:54 -05:00
|
|
|
|
|
|
|
|
## Introduction
|
|
|
|
|
|
2024-12-09 12:55:13 -05:00
|
|
|
Nous avons choisi d'exécuter les composantes de cette application avec Docker, car cela simplifie le processus de
|
|
|
|
|
gestion des processus d'application.
|
2024-11-27 14:47:54 -05:00
|
|
|
|
2024-12-09 12:55:13 -05:00
|
|
|
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.
|
2024-11-27 14:47:54 -05:00
|
|
|
|
|
|
|
|
```plantuml
|
2024-11-27 15:52:32 -05:00
|
|
|
@startuml
|
|
|
|
|
skinparam style strictuml
|
|
|
|
|
skinparam component {
|
|
|
|
|
BackgroundColor<<Container>> LightBlue
|
|
|
|
|
BackgroundColor<<Image>> lightgreen
|
|
|
|
|
}
|
|
|
|
|
node "evalsa.etsmtl.ca" {
|
|
|
|
|
artifact "docker-compose.yml" as compose
|
|
|
|
|
node "Docker" as docker {
|
|
|
|
|
[evaluetonsavoir-routeur\n(nginx)] <<Container>> as ROC
|
|
|
|
|
[evaluetonsavoir-frontend\n(vite + TypeScript React)] <<Container>> as FEC
|
|
|
|
|
component "evaluetonsavoir-backend\n(Express, Javascript)" <<Container>> as BEC {
|
|
|
|
|
port API_REST
|
|
|
|
|
port SOCKET_SALLE
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
database "MongoDB" as BD
|
|
|
|
|
BD -- BEC
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
node "Docker hub" {
|
|
|
|
|
component evaluetonsavoir-routeur <<image>> as RO {
|
|
|
|
|
}
|
|
|
|
|
component evaluetonsavoir-frontend <<image>> as FE {
|
|
|
|
|
}
|
|
|
|
|
component evaluetonsavoir-backend <<image>> as BE {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
node "GitHub" {
|
|
|
|
|
artifact "routeur-deploy.yml" <<action>> as RO_D
|
|
|
|
|
artifact "backend-deploy.yml" <<action>> as BE_D
|
|
|
|
|
artifact "frontend-deploy.yml" <<action>> as FE_D
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BE <-- BE_D : on commit
|
|
|
|
|
FE <-- FE_D
|
|
|
|
|
RO <-- RO_D
|
|
|
|
|
|
|
|
|
|
BEC <.. BE : "pull à 5h du matin"
|
|
|
|
|
FEC <.. FE
|
|
|
|
|
ROC <.. RO
|
|
|
|
|
|
|
|
|
|
node "Navigateur moderne\n(Windows/Android)" as browser {
|
|
|
|
|
[React App] as RA_NAV
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
RA_NAV <.. FEC : chargée à partir des pages web
|
|
|
|
|
RA_NAV ..> API_REST : API REST
|
|
|
|
|
RA_NAV <..> SOCKET_SALLE : WebSocket
|
|
|
|
|
@enduml
|
2024-11-27 14:47:54 -05:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Prérequis
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
2024-12-09 12:55:13 -05:00
|
|
|
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.
|
2024-11-27 14:47:54 -05:00
|
|
|
|
2024-12-09 12:55:13 -05:00
|
|
|
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.
|
2024-11-27 14:47:54 -05:00
|
|
|
|
|
|
|
|
## Étape 1 - Installation de Docker
|
|
|
|
|
|
|
|
|
|
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 :
|
|
|
|
|
```Output
|
|
|
|
|
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 :
|
|
|
|
|
```Output
|
|
|
|
|
● 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
|
|
|
|
|
> ```
|
|
|
|
|
|
|
|
|
|
## Étape 2 - Installation de Docker Compose
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Étape 3 - Ajouter notre projet
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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]
|
2024-12-09 12:55:13 -05:00
|
|
|
> 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.
|
2024-11-27 14:47:54 -05:00
|
|
|
|
|
|
|
|
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
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Conclusion
|
|
|
|
|
|
|
|
|
|
Félicitations ! Vous avez maintenant avec succès configuré et lancé EvalueTonSavoir sur votre serveur, prêt à être utilisé.
|