Conteneuriser une application
Pour le reste de ce guide, vous travaillerez avec un gestionnaire de liste de tâches simple qui s'exécute sur Node.js. Si vous n'êtes pas familier avec Node.js, ne vous inquiétez pas. Ce guide ne nécessite aucune expérience préalable avec JavaScript.
Prérequis
- Vous avez installé la dernière version de Docker Desktop.
- Vous avez installé un client Git.
- Vous avez un IDE ou un éditeur de texte pour éditer les fichiers. Docker recommande d'utiliser Visual Studio Code.
Obtenir l'application
Avant de pouvoir exécuter l'application, vous devez obtenir le code source de l'application sur votre machine.
-
Clonez le dépôt getting-started-app en utilisant la commande suivante :
$ git clone https://github.com/docker/getting-started-app.git
-
Visualisez le contenu du dépôt cloné. Vous devriez voir les fichiers et sous-répertoires suivants.
├── getting-started-app/ │ ├── .dockerignore │ ├── package.json │ ├── README.md │ ├── spec/ │ ├── src/ │ └── yarn.lock
Construire l'image de l'application
Pour construire l'image, vous devrez utiliser un Dockerfile. Un Dockerfile est simplement un fichier basé sur du texte sans extension de fichier qui contient un script d'instructions. Docker utilise ce script pour construire une image de conteneur.
-
Dans le répertoire
getting-started-app
, au même emplacement que le fichierpackage.json
, créez un fichier nomméDockerfile
avec le contenu suivant :# syntax=docker/dockerfile:1 FROM node:lts-alpine WORKDIR /app COPY . . RUN yarn install --production CMD ["node", "src/index.js"] EXPOSE 3000
Ce Dockerfile commence avec une image de base
node:lts-alpine
, une image Linux légère qui vient avec Node.js et le gestionnaire de packages Yarn pré-installés. Il copie tout le code source dans l'image, installe les dépendances nécessaires, et démarre l'application. -
Construisez l'image en utilisant les commandes suivantes :
Dans le terminal, assurez-vous d'être dans le répertoire
getting-started-app
. Remplacez/path/to/getting-started-app
par le chemin vers votre répertoiregetting-started-app
.$ cd /path/to/getting-started-app
Construisez l'image.
$ docker build -t getting-started .
La commande
docker build
utilise le Dockerfile pour construire une nouvelle image. Vous avez peut-être remarqué que Docker a téléchargé beaucoup de "couches". C'est parce que vous avez indiqué au constructeur que vous vouliez commencer à partir de l'imagenode:lts-alpine
. Mais, puisque vous n'aviez pas cela sur votre machine, Docker a dû télécharger l'image.Après que Docker ait téléchargé l'image, les instructions du Dockerfile ont copié votre application et utilisé
yarn
pour installer les dépendances de votre application. La directiveCMD
spécifie la commande par défaut à exécuter lors du démarrage d'un conteneur à partir de cette image.Enfin, le flag
-t
étiquette votre image. Pensez-y comme un nom lisible par l'homme pour l'image finale. Puisque vous avez nommé l'imagegetting-started
, vous pouvez faire référence à cette image lorsque vous exécutez un conteneur.Le
.
à la fin de la commandedocker build
indique à Docker qu'il devrait chercher leDockerfile
dans le répertoire courant.
Démarrer un conteneur d'application
Maintenant que vous avez une image, vous pouvez exécuter l'application dans un conteneur en utilisant la commande docker run
.
-
Exécutez votre conteneur en utilisant la commande
docker run
et spécifiez le nom de l'image que vous venez de créer :$ docker run -d -p 127.0.0.1:3000:3000 getting-started
Le flag
-d
(abréviation de--detach
) exécute le conteneur en arrière-plan. Cela signifie que Docker démarre votre conteneur et vous renvoie à l'invite du terminal. De plus, il n'affiche pas les journaux dans le terminal.Le flag
-p
(abréviation de--publish
) crée un mappage de port entre l'hôte et le conteneur. Le flag-p
prend une valeur de chaîne au formatHOST:CONTAINER
, oùHOST
est l'adresse sur l'hôte, etCONTAINER
est le port sur le conteneur. La commande publie le port 3000 du conteneur vers127.0.0.1:3000
(localhost:3000
) sur l'hôte. Sans le mappage de port, vous ne pourriez pas accéder à l'application depuis l'hôte. -
Après quelques secondes, ouvrez votre navigateur web sur http://localhost:3000. Vous devriez voir votre application.
-
Ajoutez un ou deux éléments et voyez que cela fonctionne comme vous l'attendez. Vous pouvez marquer les éléments comme terminés et les supprimer. Votre frontend stocke avec succès les éléments dans le backend.
À ce stade, vous avez un gestionnaire de liste de tâches en cours d'exécution avec quelques éléments.
Si vous jetez un coup d'œil rapide à vos conteneurs, vous devriez voir au moins un conteneur en cours d'exécution qui utilise l'image getting-started
et sur le port 3000
. Pour voir vos conteneurs, vous pouvez utiliser la CLI ou l'interface graphique de Docker Desktop.
Exécutez la commande docker ps
dans un terminal pour lister vos conteneurs.
$ docker ps
Une sortie similaire à la suivante devrait apparaître.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df784548666d getting-started "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 127.0.0.1:3000->3000/tcp priceless_mcclintock
Dans Docker Desktop, sélectionnez l'onglet Conteneurs pour voir une liste de vos conteneurs.


Résumé
Dans cette section, vous avez appris les bases de la création d'un Dockerfile pour construire une image. Une fois que vous avez construit une image, vous avez démarré un conteneur et vu l'application en cours d'exécution.
Informations connexes :
Étapes suivantes
Ensuite, vous allez apporter une modification à votre application et apprendre comment mettre à jour votre application en cours d'exécution avec une nouvelle image. En cours de route, vous apprendrez quelques autres commandes utiles.