Important : Dans le Dockerfile, tu dois ajouter obligatoirement la ligne de commentaire suivante tout au début du fichier : "# Dockerfile 2.0".
En lien avec la commande Docker met les étapes en dessous de chacune des lignes de commentaires dans le fichier Dockerfile.
Important : Dans le Dockerfile, tu dois ajouter obligatoirement la ligne de commentaire suivante tout au début du fichier : “# Dockerfile 2.0”.
# Image Node officielle (ajouter en dessous la commande)# Dossier de travail dans le conteneur (ajouter en dessous la commande)# Copier package.json (ajouter en dessous la commande)# Installer les dépendances (rien à inscrire)RUN npm install# Copier le reste du code (rien à inscrire)COPY . .# Exposer le port de l'API (ajouter en dessous la commande)# Commande de démarrage de nodeCMD ["npm", "start"]
Partie 3 — Créer et compléter le fichier docker-compose.yaml
Dans tp2-docker/, créez ce fichier Docker Compose
Compléter les lignes où il est écrit :
# Ajouter la ou les lignes :
# rep :
Important : Dans le Docker Compose, tu dois mettre obligatoirement à la ligne de commentaire "Base de données MongoDB" pour "Base de données MongoDB 6.0"
version: "3.8"services:
# -------------------------# Base de données MongoDB# -------------------------database:
# Ajouter la ou les lignes : l'image est mongo version 6# rep : container_name: mongo-db# Ajouter la ou les lignes : Expose MongoDB au host. Le port d'entrée et de sortie est 27017# rep : volumes:
- mongo-data:/data/db # Persistance des données# Ajouter la ou les lignes : réseau utilisé, le nom du réseau est app-network# rep : # -------------------------# Backend Node.js (API)# Utilise un Dockerfile# -------------------------backend:
# Ajouter la ou les lignes : on utilise un Dockerfile créer plus haut qui se trouve dans le répertoire "./backend"# rep : # Ajouter la ou les lignes : Le nom de ce conteneur doit être api-backend# rep : # Ajouter la ou les lignes : Ajouter le # de port d'entrée et de sortie qui est le même. (L'information sur le # du port est dans le lab ;-P )# rep : # Ajouter la ou les lignes : Ce conteneur dépend du conteneur database# rep : # Ajouter la ou les lignes : réseau utilisé, le nom du réseau est app-network# rep : # -------------------------# Frontend React# Utilise l'image Node# -------------------------frontend:
image: node:18container_name: react-frontend# Ajouter la ou les lignes : le nome du répertoire de travail est "/app"# rep : volumes:
- ./frontend:/app # Monte le code Reactports:
- "3000:3000"command: sh -c "npm install && npm start" # Installe et lance le serveur de dev React# Ajouter la ou les lignes : réseau utilisé, le nom du réseau est app-network# rep : # -------------------------# Volume persistant MongoDB# -------------------------volumes:
mongo-data:
# -------------------------# Réseau utilisé par les services# -------------------------networks:
app-network:
Partie 4 — Démarrer l’environnement
docker-compose up -d --build
Partie 5 — Injecter des données dans MongoDB
docker-compose exec backend npm run seed
Partie 6 — Vérifier et tester la solution
Vérifier que les conteneurs sont démarrés
docker-compose ps
Vérifier si les données sont dans le conteneur
Trouve la commande et montrez-moi les données exécutant ces commandes dans le conteneur.
On te donne les lignes nécessaires pour afficher les données, trouve le bout manquant qui se trouve entre crochets
[Entre la commande docker] mongosh
Une fois dans le conteneur, faites ces commandes.
use cours
db.etudiants.find()# pour sortir de mongodb et retrouver la console, faites "exit"
Faites une capture d’écran et enregistrez-la.
Montrer que le serveur Rest Api fonctionne sur le host
Partie 7 — Vérifier et tester la solution finale sur le host
Dans Chrome testez : http://localhost:3000 ou http://ip-vm:3000 à partir d’une autre vm
Faites une capture d’écran et enregistrez-la.
Questions à remettre dans votre journal
Expliquez comment les services communiquent entre eux dans Docker Compose.
Comment pourrait-on sécuriser l’architecture et faire en sorte que la machine hôte puisse accéder seulement au conteneur frontend (http://localhost:3000).
Qu’elle est la différence entre image: et build: dans Docker Compose ?
Mettre les captures d’écrans demandées plus haut
Grille d’évaluation
Section
Points
1. Structure du projet
6 pts
2. Dockerfile 3 point par ligne
12 pts
3. docker-compose.yaml Entre 1 et 3 points par ligne
32 pts
4. Questions de compréhension
14 pts
Total
64 pts
Toute autre ligne superflue : -1 pt pour le Docker Compose et -2 points pour le Dockerfile
3. docker-compose.yaml (détail)
Critère
Points
3.1 Service database correct
7 pts
3.2 Service backend correct
11 pts
3.3 Service frontend correct
8 pts
3.4 L’exécution du Docker compose fonctionne et les données sont présentes.
6 pts
Total
32 pts
4. Questions de compréhension et capture d’écran (détail)
Critère
Points
4.1 Comment pourrait-on sécuriser l’architecture et faire en sorte que la machine hôte puisse accéder seulement au conteneur frontend (http://localhost:3000).