Skip to content

minabl/TP2Ops

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Compte Rendu du TP2 : Docker et Docker Compose

Table des Matières

Introduction

Ce compte rendu documente les étapes et les résultats du TP2 portant sur l'utilisation de Docker et Docker Compose pour containeriser une application MERN . Ce projet vise à renforcer la compréhension des concepts de conteneurisation et d'orchestration des applications.

Objectifs

Les principaux objectifs de ce TP étaient :

  • Containerisation des applications : Apprendre à utiliser Docker pour créer des images et des conteneurs.
  • Orchestration avec Docker Compose : Découvrir comment gérer plusieurs conteneurs en utilisant Docker Compose.
  • Déploiement d'une application MERN : Comprendre les spécificités du déploiement d'une application MERN en environnement Docker.

Structure du Projet

 mern-app/
    ├── client/               
    │   ├── Dockerfile         
    │   ├── package.json       
    │   ├── src/              
    │   └── public/            
    ├── server/               
    │   ├── Dockerfile        
    │   ├── package.json       
    │   ├── src/              
    │   └── routes/            
    ├── docker-compose.yml 

Étapes Réalisées

  1. Création des Dockerfiles 1.1 Dockerfile pour le Serveur (Express)

     FROM node:lts-alpine
     
     WORKDIR /app
     
     COPY package*.json ./
     
     RUN npm install
     
     COPY . .
     
     EXPOSE 5000
     CMD ["npm","start"]
    

    1.2 Dockerfile pour le Client (React)

      FROM node:lts-alpine
    
      WORKDIR /app
      
      COPY package*.json ./
      
      RUN npm install
      
      COPY . .
      
      RUN npm run build
    
      RUN npm install -g serve
      
      
      EXPOSE 3000
      
      CMD ["serve", "-s", "build", "-l", "3000"]
    
  2. Création du Réseau Docker Un réseau Docker a été créé pour permettre la communication entre les conteneurs :

    docker network create mern-network
    
  3. Exécution de MongoDB Un conteneur MongoDB a été lancé pour servir de base de données :

      docker run -d --name mongodb --network mern-network mongo
    
  4. Exécution des Conteneurs du Serveur et du Client

    - docker run -d --name server --network mern-network -p 5000:5000 mern-server
    - docker run -d --name client --network mern-network -p 3000:3000 mern-client
    

Ensuite, on procède à la création d’un fichier Docker Compose pour automatiser la gestion des services. Grâce à Docker Compose, on centralise le déploiement, la configuration des connexions entre les conteneurs, et la mise en place d'un environnement cohérent pour l'application.

  1. Création du Fichier Docker Compose
       version: "3.8"
       services:
         mongodb:
           image: mongo
           container_name: mongodb
           networks:
             - mern-network
           ports:
             - "27017:27017"
         server:
           build: ./server
           container_name: server
           networks:
             - mern-network
           ports:
             - "5000:5000"
           depends_on:
             - mongodb
           environment:
             - MONGO_URI=mongodb://mongodb:27017/mern-app
             - PORT=5000
             
         client:
           build: ./client
           container_name: client
           networks:
             - mern-network
           ports:
             - "3000:3000"
           
           depends_on:
             - server
       networks:
         mern-network:
           driver: bridge

  1. Volume

    Dans le fichier Docker Compose, aucune configuration de volume n'est définie pour le service MongoDB. Cela signifie que les données seront stockées dans le système de fichiers temporaire du conteneur. En
    conséquence, si le conteneur est supprimé, toutes les données seront perdues. 7.1 Configuration d'un volume pour MongoDB

     services:
       mongodb:
         image: mongo
         container_name: mongodb
         volumes:
           - mongodb_data:/data/db
         ports:
           - "27017:27017"
          .....
    
     volumes:
       mongodb_data:
         driver: local
    
    

    7.2 Explication du volume

     -mongodb_data:/data/db : Cette ligne définit un volume Docker qui mappe le répertoire de données de MongoDB (/data/db) vers un volume persistant nommé mongodb_data.
     -driver: local: Cette option spécifie que le volume utilise le pilote local par défaut de Docker pour stocker les données sur le système hôte.
    

    7.3 Recréer les conteneurs :

    - docker-compose down : arrête et supprime les conteneurs existants
    - docker-compose up --build :  recrée les conteneurs avec la nouvelle configuration
    
    Capture d'écran de l'application React

Images du Projet

Voici quelques captures d'écran de l'application :

Capture d'écran de l'application React Capture d'écran de l'application React Capture d'écran de l'application React
Capture d'écran de l'application React Capture d'écran de l'application React Capture d'écran de l'application React Capture d'écran de l'application React

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published