Conteneurisation d’un service Node.js

La conteneurisation consiste à regrouper une application, ses dépendances et bibliothèques ensemble afin qu’elles puissent être utilisées de manière plug-and-play sur n’importe quel type d’infrastructure. Chaque regroupement est appelé un conteneur.

Pourquoi conteneuriser un service Node.js?

Comme discuté dans la dernière section, conteneuriser un service Node.js signifierait regrouper l’application, ses dépendances, bibliothèques et même sa configuration dans un conteneur unique. La conteneurisation offre les avantages suivants:

  1. Portable. Étant donné que nous avons regroupé toutes les exigences de l’application dans un conteneur, les mêmes images peuvent être installées en développement, en staging et en production.
  2. Rapide et léger. Les conteneurs ont tendance à être beaucoup plus rapides que les machines virtuelles (VM) ou le matériel nu car ils exécutent uniquement les exigences de l’application, tandis qu’historiquement, les VM ou le matériel nu démarreraient toute la machine et toutes les applications.
  3. Évolutif. Avec les deux avantages ci-dessus, la scalabilité devient très facile car les conteneurs sont rapides, efficaces et faciles à déployer.

Dans cet article, nous allons nous concentrer spécifiquement sur containeriser une application Node.js.

Prérequis

Outils et Logiciels

Docker (Moteur Docker et Docker CLI)

Nous aurons besoin de installer Docker pour gérer nos conteneurs. Le Moteur Docker gère le temps d’exécution, et le CLI peut être utilisé pour interagir via la ligne de commande.

Node.js et npm/yarn Installés (Pour le Développement/Testing Initial)

Nous aurons besoin de Node.js et npm installés pour installer les dépendances des bibliothèques et exécuter le service.

Kubernetes ou Docker Compose pour Gérer Plusieurs Conteneurs (Optionnel)

Nous aurons besoin de Kubernetes ou Docker Compose pour gérer plusieurs conteneurs.

Fondamentaux

Structure de l’application Node.js :

  • Il est attendu que le lecteur comprenne déjà le rôle du fichier principal (app.js ou index.js) dans le projet, ainsi que le rôle d’autres fichiers comme package.json et yarn.lock.
  • Cet article ne plongera pas non plus dans d’autres aspects du projet, comme les contrôleurs, les middleware et les routes.

Commandes de base Docker et syntaxe du Dockerfile

Commandes Docker :

Shell

 

Instructions de base du Dockerfile :

Shell

 

Les tables couvertes et la structure Node.js sont suffisantes pour commencer la conteneurisation et déployer votre service Node.js.

Mise en place du service Node.js

Configuration de l’environnement Node.js est un processus simple. Assurez-vous d’avoir Node.js installé sur votre machine. Si vous avez des doutes, veuillez consulter l’appendice (1)Une fois installé, ouvrez votre terminal et vérifiez l’installation en tapant

Shell

 

Créez un répertoire de projet et initialisez votre projet comme suit:

Shell

 

Installez le module express

Shell

 

Créez un fichier serveur, appelons-le server.mjs, où nous pouvons ajouter la route et la logique correspondant à la route. Puisque cet article traite principalement de la conteneurisation, nous maintiendrons la logique de l’endpoint très simple. Quelque chose comme ceci:

JavaScript

 

Maintenant votre service est prêt à être démarré, naviguez vers le répertoire du projet dans le terminal et exécutez cette commande :

Shell

 

Le service est en cours d’exécution; si nous visitons http://localhost:3000, nous verrons :

« Bienvenue sur mon serveur »

Création du Dockerfile

Révisons ce qu’est un Dockerfile, il contient les instructions pour construire l’image Docker. Créons un Dockerfile dans le répertoire racine. Pendant cette étape, comme nous l’avons discuté dans les instructions du Dockerfile, nous devons effectuer les actions suivantes :

Plain Text

 

Construction et exécution de l’image Docker

Depuis la racine du terminal, naviguez vers votre projet et exécutez la commande suivante :

Shell

 

nom-de-l'image est le nom de l’image Docker. Le . à la fin définit le contexte sur le répertoire actuel.

Une fois l’image construite, nous allons créer le conteneur et exécuter l’application Node.js à l’aide de la commande suivante :

Shell

 

Une fois que ce qui précède est réussi, vous pouvez vérifier que le service est en cours d’exécution en exécutant docker ps, puis en accédant à la même URL localhost qu’auparavant.

Pousser des images vers un registre

Maintenant que votre image est prête, il est temps de la pousser vers un registre. Pour les besoins de cet article, essayons de la pousser uniquement vers Docker Hub. Docker Hub est un service basé sur le cloud pour stocker, partager et gérer les images de conteneurs Docker.

Créez un compte sur https://hub.docker.com/ et connectez-vous avec votre compte.

Shell

 

Une fois connecté, les images construites localement peuvent être ajoutées comme suit :

Shell

 

Où :

  • tag est soit latest soit un numéro de version.
  • nom-du-dépôt est le nom du dépôt souhaité.

Ensuite, poussez l’image comme suit :

Shell

 

Conclusion

Comme nous pouvons le voir, la conteneurisation rend les flux de travail et les services complexes rapides, portables et évolutifs en séparant les dépendances. Une fois mis en œuvre, toute l’équipe en bénéficie.Je vous encourage à explorer les fonctionnalités avancées comme les constructions multi-étapes et le réseau de conteneurs. Envisagez également d’apprendre à utiliser des outils d’orchestration (par exemple, Kubernetes) et d’intégrer des pipelines CI/CD pour optimiser votre flux de développement.

Annexe

  1. Comment installer node et npm sur votre machine

Source:
https://dzone.com/articles/containerization-of-a-nodejs-service