L’objectif du projet est de déployer l’application suivante en utilisant Docker et Docker Compose.
| Service | Description |
|---|---|
vote |
Frontend Flask pour voter |
result |
Frontend Node.js pour visualiser les résultats |
worker |
Service .NET qui traite les votes |
redis |
Base de données NoSQL temporaire (file de messages) |
db |
PostgreSQL pour stocker les résultats |
seed-data |
Génère automatiquement des votes |
nginx |
Load balancer |
healthchecks/ |
Scripts de vérification d’état |
git clone <lien_du_projet>
cd <nom_du_projet>Avant de lancer les services, vérifier que le fichier seed-data/generate-votes.sh pointe bien sur l'adresse suivante dans la commande ab :
ab -n 1000 -c 50 -p posta -T "application/x-www-form-urlencoded" http://nginx:80/N'oubliez pas de remettre l'ancienne adresse après vos tests (nécessaire pour la partie Kubernetes).
docker compose up --build- Interface
result: http://localhost:4000/ - Interface
vote: http://localhost:8000/
docker compose downL’ensemble des travaux bonus ont été réalisés.
Des healthchecks ont été ajoutés sur les services suivants :
voteredisdb
Les scripts sont disponibles dans le répertoire healthcheck/.
Les images Docker ont été optimisées pour être plus légères, en supprimant les fichiers inutiles et en utilisant des images de base allégées (slim, alpine, etc.).
Le service worker en .NET utilise une construction multi-étapes pour : - Compiler le code dans une première image - Générer une image finale contenant uniquement le nécessaire à l’exécution
Dans le cadre de la suite du projet, les services vote, result, seed-data et worker seront déployés dans un cluster Kubernetes. Pour assurer la compatibilité, les images Docker doivent être construites avec des noms précis correspondant à ceux utilisés dans nos manifestes Kubernetes.
Depuis chaque répertoire contenant un Dockerfile (vote/, result/, seed-data/, worker/), utilisez la commande appropriée parmi les suivantes :
docker build -t vote .
docker build -t result .
docker build -t seed-data .
docker build -t worker .- Matthis BLEUET [email protected]
- Nathan FOUERE [email protected]