Rapport de Déploiement - Application de Vote
Infrastructure Globale
Serveur: Ubuntu Server avec Docker et Docker Compose
CI/CD: Jenkins en conteneur
Réseaux: Frontend et Backend séparés
Stockage: Volumes persistants pour Jenkins et PostgreSQL
Installation de docker et docker compose
- Installer Docker
sudo apt update
sudo apt install -y [Link]
- Installer Docker Compose
sudo curl -L "[Link]
linux-x86_64" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
- Vérifier versions
docker --version
docker-compose version
- Permissions
sudo usermod -aG docker $USER
sudo chmod 666 /var/run/[Link]
Composants de l'Application
Jenkins:
Dockerfile
FROM jenkins/jenkins:lts
USER root
RUN apt-get update && \
apt-get -y install [Link] docker-compose
USER jenkins
Configuration ([Link]) de Jenkins:
version: '3'
services:
jenkins:
build: .
ports:
- "8080:8080"
volumes:
- jenkins_home:/var/jenkins_home
- /var/run/[Link]:/var/run/[Link]
- /opt/voting-app:/opt/voting-app
networks:
- frontend
- backend
networks:
frontend:
driver: bridge
backend:
driver: bridge
volumes:
jenkins_home:
Application de Vote
[Link] principal:
version: '3'
services:
vote:
image: voting-app
ports:
- "5000:80"
networks:
- frontend
- backend
result:
image: result-app
ports:
- "5001:80"
networks:
- frontend
- backend
depends_on:
- db
redis:
image: redis:alpine
networks:
- backend
worker:
image: worker-app
networks:
- backend
depends_on:
- db
- redis
db:
image: postgres:9.4
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_HOST_AUTH_METHOD=trust
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
networks:
frontend:
driver: bridge
backend:
driver: bridge
volumes:
db-data:
Pipeline CI/CD
pipeline {
agent any
stages {
stage('Build Vote App') {
steps {
sh 'cd /opt/voting-app/voting-app/vote && docker build -t voting-app .'
}
}
stage('Build Result App') {
steps {
sh 'cd /opt/voting-app/voting-app/result && docker build -t result-app .'
}
}
stage('Build Worker') {
steps {
sh 'cd /opt/voting-app/voting-app/worker && docker build -t worker-app .'
}
}
stage('Deploy') {
steps {
sh 'cd /opt/voting-app/voting-app && docker-compose up -d'
}
}
}
}
Déploiement des Conteneurs
voting-app-vote-1 : Frontend Vote
voting-app-result-1 : Frontend Result
voting-app-worker-1 : Traitement des votes
voting-app-redis-1 : Cache des votes
voting-app-db-1 : Base de données PostgreSQL
junior-jenkins-1 : Serveur CI/CD
Les conteneurs démarrent avec succès et sont connectés via deux réseaux distincts (frontend et
backend) pour la sécurité.
Les vues
Jenkins
Vote
Résultat
URLs:
- Jenkins: [Link]
- Vote: [Link]
- Result: [Link]
Sécurité:
- Isolation réseau frontend/backend
- Volumes persistants pour les données
- Communication inter-conteneurs sécurisée