TW3 — Technologies du Web 3

🚀 Création d'une Image Docker : Un Cas Concret

Nous allons créer une image Docker pour cette application afin de l'exécuter dans un conteneur. L'objectif est d'empaqueter cette application, avec toutes ses dépendances, dans une image Docker que nous pourrons exécuter sur n'importe quel système.

Dans cet exemple, nous allons empaqueter une application web simple en Node.js dans une image Docker afin de l'exécuter dans un conteneur. L'objectif est de standardiser le déploiement en encapsulant l'application et toutes ses dépendances dans une image reproductible.


📦 L'Application Node.js

Supposons que notre application est un serveur Node.js qui affiche "Hello, Docker!" sur le port 3000. La structure du projet est la suivante :

- app/
  - Dockerfile
  - app.js
  - package.json

🐳 app.js

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello, Docker!');
});

app.listen(3000, () => {
  console.log('App is running on port 3000');
});

🐳 package.json

{
  "name": "docker-node-app",
  "version": "1.0.0",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "^4.17.1"
  }
}

Processus complet : Du code à l'image Docker

Écrire le Dockerfile

Le Dockerfile est la "recette" pour construire l'image. Créez un fichier nommé Dockerfile dans le dossier app/ avec ce contenu :

# Image de base : Node.js léger sur Alpine Linux
FROM node:20-alpine

# Répertoire de travail dans le conteneur
WORKDIR /app

# Copier et installer les dépendances
COPY package.json ./
RUN npm install

# Copier le reste du code
COPY . .

# Exposer le port 3000
EXPOSE 3000

# Commande pour démarrer l'application
CMD ["npm", "start"]

Explications des instructions :

  • FROM : Image de base à utiliser
  • WORKDIR : Répertoire de travail dans le conteneur
  • COPY : Copier des fichiers du host au conteneur
  • RUN : Exécuter une commande (npm install)
  • EXPOSE : Déclarer le port écouté
  • CMD : Commande par défaut au lancement

Construire l'image Docker

Placez-vous dans le dossier app/, qui contient déjà le Dockerfile, app.js et package.json, puis exécutez :

cd app
docker build -t my-node-app .

Explication :

  • -t my-node-app : Nommer l'image "my-node-app"
  • . : Utiliser comme contexte de build le dossier app/

Docker lira le Dockerfile, téléchargera l'image de base, exécutera les commandes, et créera votre image finale.

Vérifier l'image créée

Listez vos images Docker :

docker images

Vous devriez voir my-node-app avec sa taille et son ID.

Lancer un conteneur à partir de l'image

Exécutez l'image dans un conteneur :

docker run -d -p 3000:3000 my-node-app

Options :

  • -d : Mode détaché (arrière-plan)
  • -p 3000:3000 : Mapper le port 3000 du conteneur au port 3000 de l'hôte
  • my-node-app : L'image à utiliser

Tester l'application

Ouvrez votre navigateur et accédez à http://localhost:3000.

Vous devriez voir le message "Hello, Docker!" affiché par votre application Node.js s'exécutant dans le conteneur.

Vérifier et arrêter le conteneur

Listez les conteneurs en cours d'exécution :

docker ps

Pour arrêter le conteneur :

docker stop <CONTAINER_ID>

📌 Résumé

  • Dockerfile : Automatisation de la création d'une image Docker pour une application Node.js.
  • Images Docker : Permettent d'encapsuler une application avec toutes ses dépendances pour garantir une exécution uniforme sur tout environnement.
  • Conteneurs : Instances isolées d'une image qui s'exécutent de manière reproductible, quel que soit l'environnement (dev, test, prod).

Cette approche vous permet de standardiser et simplifier le déploiement d'applications en créant des images Docker, garantissant ainsi une exécution cohérente et fiable sur n'importe quelle machine où Docker est installé. 🚀

Docker

Terminez le quiz du chapitre pour le marquer comme complété.

Tableau de bord

On this page