Conteneurisation JavaScript : Docker pour Node.js et le frontend

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi votre projet JavaScript mérite-t-il Docker ?

\n\n

Avez-vous déjà entendu la phrase : « Sur ma machine, ça marchait ! » ? Si vous êtes développeur JavaScript, vous avez sûrement déjà vécu la situation où l'application fonctionne parfaitement en local, mais plante sur le serveur ou chez un collègue avec une erreur mystérieuse. La conteneurisation d'applications JavaScript avec Docker résout ce problème une fois pour toutes.

\n\n

Docker vous permet d'empaqueter votre code, toutes les dépendances (paquets npm), les variables d'environnement et même la version de Node.js dans un « conteneur » léger. Ce conteneur fonctionnera de la même manière sur votre ordinateur portable, sur un serveur AWS et sur l'ordinateur d'un débutant qui vient d'installer Git. Dans cet article, nous allons voir comment faire collaborer JavaScript et Docker, écrire du code concret et créer une image prête pour la production pour votre prochain projet personnel.

\n\n

Les bases de Docker pour le développeur JavaScript

\n\n

Avant de plonger dans le code, comprenons les concepts clés. Docker est comme une machine virtuelle, mais beaucoup plus légère. Au lieu d'émuler un système d'exploitation entier, il utilise le noyau de l'hôte et isole uniquement votre application.

\n\n

Dockerfile — la recette de votre application

\n\n

Il s'agit d'un fichier texte dans lequel vous décrivez comment construire l'image. Pour une application Node.js, un Dockerfile typique ressemble à ceci :

\n\n
# Utilisation de l'image officielle Node.js\nFROM node:18-alpine\n\n# Définition du répertoire de travail dans le conteneur\nWORKDIR /app\n\n# Copie de package.json et package-lock.json\nCOPY package*.json ./\n\n# Installation des dépendances\nRUN npm ci --only=production\n\n# Copie du code source\nCOPY . .\n\n# Ouverture du port\nEXPOSE 3000\n\n# Commande de démarrage\nCMD ["node", "server.js"]
\n\n

Remarquez : nous copions d'abord package.json, puis tout le code. Ce n'est pas un hasard. Docker met en cache les couches, et si vous n'avez pas modifié les dépendances, l'étape npm ci ne sera pas relancée à chaque modification du code. Cela accélère considérablement la construction.

\n\n

Images et conteneurs

\n\n
    \n
  • Image — c'est un modèle. Vous la construisez une fois.
  • \n
  • Conteneur — c'est une instance en cours d'exécution de l'image. Vous pouvez créer 10 conteneurs à partir d'une seule image.
  • \n
\n\n

Créer une application Node.js à partir de zéro et la conteneuriser

\n\n

Écrivons une simple application Express et empaquetons-la dans Docker. Ce sera notre premier pas pratique dans la conteneurisation JavaScript.

\n\n

Étape 1 : Écrire l'application

\n\n

Créez un dossier docker-node-app et, à l'intérieur, un fichier server.js :

\n\n
const express = require('express');\nconst app = express();\nconst PORT = process.env.PORT || 3000;\n\napp.get('/', (req, res) => {\n  res.json({ \n    message: 'Bonjour depuis le conteneur !',\n    nodeVersion: process.version,\n    environment: process.env.NODE_ENV || 'development'\n  });\n});\n\napp.listen(PORT, () => {\n  console.log(`Serveur démarré sur le port ${PORT}`);\n});
\n\n

Initialisez npm et installez express :

\n\n
npm init -y\nnpm install express
\n\n

Nous avons maintenant une application fonctionnelle. Lancez-la en local : node server.js. Ouvrez http://localhost:3000 — vous verrez du JSON.

\n\n

Étape 2 : Créer le Dockerfile

\n\n

Créez un fichier Dockerfile (sans extension) à la racine du projet :

\n\n
FROM node:18-alpine\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci --only=production\nCOPY . .\nEXPOSE 3000\nCMD ["node", "server.js"]
\n\n

Ajoutons un fichier .dockerignore pour ne pas copier les fichiers inutiles dans l'image :

\n\n
node_modules\nnpm-debug.log\n.git\n.gitignore\n.env\nDockerfile
\n\n

Étape 3 : Construire et exécuter

\n\n

Ouvrez un terminal dans le dossier du projet et exécutez :

\n\n
docker build -t my-node-app .\ndocker run -p 3000:3000 my-node-app
\n\n

Le flag

Blogs

Book Recommendations