Skip to content

NathanFouere/devops-project

Repository files navigation

Projet Docker

L’objectif du projet est de déployer l’application suivante en utilisant Docker et Docker Compose.

image

Arborescence des services

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

Déploiement

1. Cloner le dépôt

git clone <lien_du_projet>
cd <nom_du_projet>

2. Vérifier la configuration du générateur de votes

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

3. Lancer la stack avec Docker Compose

docker compose up --build

4. Arrêter les services

docker compose down

Fonctionnalités optionnelles réalisées

L’ensemble des travaux bonus ont été réalisés.

Healthchecks

Des healthchecks ont été ajoutés sur les services suivants :

  • vote
  • redis
  • db

Les scripts sont disponibles dans le répertoire healthcheck/.

Réduction de la taille des images

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

Multistage build (worker)

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

Compatibilité Kubernetes

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 .

Auteurs

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published