Skip to content

Latest commit

 

History

History
186 lines (150 loc) · 6.75 KB

README.md

File metadata and controls

186 lines (150 loc) · 6.75 KB

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