Nouveau : Datasets open source gratuits disponibles !Decouvrir →
🟢
Intermediaire 25 min Express

Deployer Express avec Docker

Deployer Express avec Docker

Pourquoi Deployer Express avec Docker ?

Dans un environnement professionnel, l'intégration continue et le déploiement continu (CI/CD) sont des pratiques essentielles pour assurer la qualité et la rapidité de livraison du code. En particulier, les applications basées sur Node.js comme Express présentent des défis spécifiques en matière de déploiement en raison de leurs dépendances externes variées. Docker permet d'empaqueter une application avec toutes ses dépendances dans un conteneur standardisé, ce qui facilite le déploiement et garantit la portabilité.

Un cas concret est la mise en production d'un service API backend pour une application web. Avec Express, vous créez une couche d'abstraction entre les requêtes HTTP et votre logique métier. En utilisant Docker, vous pouvez satisfaire à des exigences strictes de sécurité et de performance tout en assurant que l'environnement de production est identique à celui du développement.

Prerequis

  • Connaissances nécessaires :

    • Node.js v14 ou plus
    • npm (Node Package Manager) v6 ou plus
    • Docker v20 ou plus
    • Basic understanding of JavaScript and Express
  • Outils à installer :

Concepts fondamentaux

Dockerfile

Le Dockerfile est un fichier texte qui contient les instructions pour construire une image Docker. Voici comment il ressemble :

## 👇 Base image : utilise Node.js 14
FROM node:14

## 👇 Créer le répertoire de travail dans l'image Docker
WORKDIR /app

## 👇 Copier les fichiers package.json et package-lock.json pour installer les dépendances
COPY package*.json ./

## 👇 Installer toutes les dépendances du projet
RUN npm install

## 👇 Copier tous les fichiers restants du répertoire local vers le répertoire de travail dans l'image Docker
COPY . .

## 👇 Commande pour exécuter l'application Express
CMD ["node", "index.js"]

docker-compose.yml

docker-compose.yml permet de définir et de gérer plusieurs conteneurs Docker à partir d'un seul fichier. Voici un exemple :

version: '3'
services:
  app:
    build: .
    ports:
      - "3000:3000"

Image Docker

Une image Docker est une seule étape dans le processus de construction du conteneur. Elle représente une version spécifique d'un environnement. Dans notre cas, l'image node:14 est utilisée en tant que base.

Conteneur Docker

Un conteneur Docker est une instance exécutable de l'image Docker. Il prend les instructions définies dans le Dockerfile et crée un environnement isolé pour l'application.

Mise en pratique : projet fil rouge

Pour ce tutoriel, nous allons créer un simple service API RESTful pour gérer des tâches en utilisant Express et Docker.

Étape 1 : Créer le projet

mkdir task-manager-api
cd task-manager-api
npm init -y

Étape 2 : Installer les dépendances

npm install express body-parser

Étape 3 : Créer le fichier index.js

// 👇 Importer Express et Body Parser
const express = require('express');
const bodyParser = require('body-parser');

// 👇 Initialiser l'application Express
const app = express();

// 👇 Utiliser Body Parser pour analyser les requêtes JSON
app.use(bodyParser.json());

// 👇 Gestionnaire de route pour obtenir toutes les tâches
app.get('/tasks', (req, res) => {
  const tasks = [
    { id: 1, title: 'Faire les courses' },
    { id: 2, title: 'Faire le ménage' }
  ];
  res.json(tasks);
});

// 👇 Gestionnaire de route pour ajouter une tâche
app.post('/tasks', (req, res) => {
  const task = req.body;
  tasks.push(task);
  res.status(201).json(task);
});

// 👇 Définir le port d'écoute
const PORT = process.env.PORT || 3000;

// 👇 Démarrer le serveur
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});

Étape 4 : Créer le fichier Dockerfile

## 👇 Base image : utilise Node.js 14
FROM node:14

## 👇 Créer le répertoire de travail dans l'image Docker
WORKDIR /app

## 👇 Copier les fichiers package.json et package-lock.json pour installer les dépendances
COPY package*.json ./

## 👇 Installer toutes les dépendances du projet
RUN npm install

## 👇 Copier tous les fichiers restants du répertoire local vers le répertoire de travail dans l'image Docker
COPY . .

## 👇 Commande pour exécuter l'application Express
CMD ["node", "index.js"]

Étape 5 : Créer le fichier docker-compose.yml

version: '3'
services:
  app:
    build: .
    ports:
      - "3000:3000"

Étape 6 : Construire et exécuter l'application

## 👇 Construire l'image Docker
docker-compose up --build

Erreurs fréquentes et debugging

  1. Erreur : Error: Cannot find module 'express'

    • Cause : Les dépendances n'ont pas été installées correctement.
    • Correction :
      npm install express body-parser
      
  2. Erreur : Port 3000 is already in use

    • Cause : Une autre application utilise déjà le port 3000.
    • Correction :
      docker-compose down
      docker-compose up --build
      
  3. Erreur : Error: listen EADDRINUSE: address already in use :::3000

    • Cause : Le même port est utilisé dans la configuration Docker.
    • Correction :
      docker-compose down
      docker-compose up --build
      

Pour aller plus loin

  1. Utiliser Kubernetes pour déployer Express sur un cluster de machines

  2. Optimiser l'image Docker avec des layers non cachables

  3. Utiliser un système de gestion de version pour gérer les modifications du projet

Défi pratique

Définir une API de blog simple en utilisant Express et Docker.

Créez une application qui permet d'ajouter, récupérer et supprimer des articles de blog. Assurez-vous que l'application est déployable avec Docker.


Ce tutoriel vous a guidé à travers le processus de déploiement d'une application Express avec Docker. Vous avez créé un projet simple, configuré les fichiers Dockerfile et docker-compose.yml, et exécuté l'application en conteneur Docker. N'oubliez pas que la maîtrise de ces concepts est cruciale pour le déploiement efficace d'applications basées sur Node.js dans un environnement professionnel.

Besoin d'aide sur Express ?

Besoin d'aide sur un projet technique ? Decrivez-le pour des conseils personnalises.

Recevoir des conseils

Questions frequentes

Qu'est-ce que Docker et pourquoi le choisir pour déployer une application Express ?
Docker est un logiciel qui permet de créer des conteneurs, des environnements isolés où les applications peuvent être exécutées. Il offre une portabilité et une sécurité accrues car chaque application a ses propres dépendances et ne peut pas interférer avec d'autres.
Comment configurer Docker pour mon projet Express ?
Pour configurer Docker, vous devez créer un fichier Dockerfile dans le répertoire racine de votre projet. Ce fichier doit contenir des instructions pour construire l'image du conteneur, y compris la commande `FROM node:14`, qui utilise une image Node.js pré-installée, et `COPY . /app`, qui copie les fichiers de votre projet dans le conteneur.
Comment démarrer mon application Express avec Docker ?
Pour démarrer votre application Express avec Docker, vous pouvez utiliser la commande `docker build -t nom-de-votre-image .`, qui construit l'image du conteneur. Ensuite, exécutez le conteneur avec `docker run -p 3000:3000 nom-de-votre-image`. Cela lancera votre application Express sur le port 3000 de votre machine.

Pages liees

Chaque semaine, le meilleur de la tech francaise

Tendances, salaires, outils et opportunites — directement dans votre boite mail.

Gratuit. Desabonnement en un clic. Pas de spam.