Générer et exécuter l’exemple d’application TODOBuild and run the todo sample app
Pour le reste de ce didacticiel, vous utiliserez un gestionnaire de liste de tâches simple qui s’exécute dans Node.js.For the rest of this tutorial, you'll be working with a simple todo list manager that is running in Node.js. Si vous n’êtes pas familiarisé avec Node.js, ne vous inquiétez pas !If you're not familiar with Node.js, don't worry! Aucune expérience JavaScript réelle n’est nécessaire.No real JavaScript experience is needed!
À ce stade, votre équipe de développement est relativement petite et vous créez simplement une application pour prouver votre MVP (produit minimum viable).At this point, your development team is quite small and you're simply building an app to prove out your MVP (minimum viable product). Vous souhaitez montrer son fonctionnement et ce qu’il peut faire sans avoir à réfléchir à son fonctionnement pour une équipe de grande taille, plusieurs développeurs, etc.You want to show how it works and what it's capable of doing without needing to think about how it will work for a large team, multiple developers, and so on.
Obtenir l’applicationGet the app
Avant de pouvoir exécuter l’application, vous devez récupérer le code source de l’application sur votre ordinateur.Before you can run the application, you need to get the application source code onto your machine. Pour les projets réels, vous allez généralement cloner le référentiel.For real projects, you will typically clone the repo. Toutefois, pour ce didacticiel, nous avons créé un fichier ZIP contenant l’application.But, for this tutorial, we have created a ZIP file containing the application.
Assurez-vous que Docker pour Windows ou l’édition Community de l’Ancrable est installé sur l’ordinateur local.Make sure that you have Docker for Windows or Docker Community Edition installed on the local machine. Consultez docker pour Windows documentation sur l’installation.See Docker for Windows installation documentation. Le processus d’installation rend le fichier ZIP contenant l’exemple disponible à l’adresse localhost.The install process makes the ZIP file containing the sample available at the localhost address.
Téléchargez le fichier zip.Download the ZIP. Ouvrez le fichier ZIP et veillez à extraire le contenu.Open the ZIP file and make sure you extract the contents.
Une fois l’extraction effectuée, utilisez votre éditeur de code favori pour ouvrir le projet.Once extracted, use your favorite code editor to open the project. Si vous avez besoin d’un éditeur, vous pouvez utiliser Visual Studio code.If you're in need of an editor, you can use Visual Studio Code. Vous devez voir le
package.json
et les deux sous-répertoires (src
etspec
).You should see thepackage.json
and two subdirectories (src
andspec
).
Génération de l’image conteneur de l’applicationBuilding the app's container image
Pour générer l’application, vous devez utiliser un Dockerfile
.In order to build the application, you need to use a Dockerfile
. Un fichier dockerfile est simplement un script textuel d’instructions qui est utilisé pour créer une image de conteneur.A Dockerfile is simply a text-based script of instructions that is used to create a container image. Si vous avez créé fichiers dockerfile avant, vous pouvez voir quelques défauts dans le fichier dockerfile ci-dessous.If you've created Dockerfiles before, you might see a few flaws in the Dockerfile below. Mais ne vous inquiétez pas !But, don't worry! Nous allons les passer en revue.We'll go over them.
Créez un fichier nommé
Dockerfile
dans le même dossier que le fichierpackage.json
avec le contenu suivant.Create a file namedDockerfile
in the same folder as the filepackage.json
with the following contents.FROM node:12-alpine WORKDIR /app COPY . . RUN yarn install --production CMD ["node", "/app/src/index.js"]
Vérifiez que le fichier n'
Dockerfile
a pas d’extension de fichier comme.txt
.Please check that the fileDockerfile
has no file extension like.txt
. Certains éditeurs peuvent ajouter cette extension de fichier automatiquement, ce qui génère une erreur à l’étape suivante.Some editors may append this file extension automatically and this would result in an error in the next step.Si vous ne l’avez pas déjà fait, ouvrez un terminal et accédez au
app
répertoire à l’aide de laDockerfile
.If you haven't already done so, open a terminal and go to theapp
directory with theDockerfile
. À présent, générez l’image conteneur à l’aide de ladocker build
commande.Now build the container image using thedocker build
command.docker build -t getting-started .
Vous pouvez également cliquer avec le bouton droit sur fichier dockerfile et choisir générer une image... , puis spécifier la balise à l’invite.Alternatively, you can also right-click on the Dockerfile and choose Build Image... and then specify the tag at the prompt.
Cette commande utilisait le fichier dockerfile pour générer une nouvelle image de conteneur.This command used the Dockerfile to build a new container image. Vous avez peut-être remarqué qu’un grand nombre de « couches » ont été téléchargées.You might have noticed that a lot of "layers" were downloaded. Cela est dû au fait que vous avez demandé au générateur que vous vouliez démarrer à partir de l'
node:12-alpine
image.This is because you instructed the builder that you wanted to start from thenode:12-alpine
image. Toutefois, étant donné que vous ne l’avez pas sur votre ordinateur, cette image devait être téléchargée.But, since you didn't have that on your machine, that image needed to be downloaded.Une fois l’image téléchargée, vous l’avez copiée dans votre application et vous l’avez utilisée
yarn
pour installer les dépendances de votre application.After the image was downloaded, you copied in your application and usedyarn
to install your application's dependencies. LaCMD
directive spécifie la commande par défaut à exécuter lors du démarrage d’un conteneur à partir de cette image.TheCMD
directive specifies the default command to run when starting a container from this image.Enfin, l'
-t
indicateur balise votre image.Finally, the-t
flag tags your image. Imaginez simplement comme un nom explicite pour l’image finale.Think of this simply as a human-readable name for the final image. Étant donné que vous avez nommé l’imagegetting-started
, vous pouvez faire référence à cette image quand vous exécutez un conteneur.Since you named the imagegetting-started
, you can refer to that image when you run a container.Le
.
à la fin de ladocker build
commande indique à l’ancrage qu’il doit rechercher leDockerfile
dans le répertoire actif.The.
at the end of thedocker build
command tells that Docker should look for theDockerfile
in the current directory.
Démarrage d’un conteneur d’applicationStarting an app container
Maintenant que vous avez une image, exécutez l’application !Now that you have an image, run the application! Pour ce faire, utilisez la docker run
commande (Rappelez-vous qu’à partir d’une version antérieure ?).To do so, use the docker run
command (remember that from earlier?).
Démarrez votre conteneur à l’aide de la
docker run
commande et spécifiez le nom de l’image que vous venez de créer :Start your container using thedocker run
command and specify the name of the image you just created:docker run -dp 3000:3000 getting-started
Vous vous souvenez des
-d
-p
indicateurs et ?Remember the-d
and-p
flags? Vous exécutez le nouveau conteneur en mode « détaché » (en arrière-plan) et en créant un mappage entre le port 3000 de l’ordinateur hôte et le port 3000 du conteneur.You're running the new container in "detached" mode (in the background) and creating a mapping between the host's port 3000 to the container's port 3000. Sans le mappage de port, vous ne seriez pas en mesure d’accéder à l’application.Without the port mapping, you wouldn't be able to access the application.Après quelques secondes, ouvrez votre navigateur Web sur http://localhost:3000 .After a few seconds, open your web browser to http://localhost:3000. Vous devez voir l’application !You should see the app!
Continuez et ajoutez un ou deux éléments et voyez qu’ils fonctionnent comme prévu.Go ahead and add an item or two and see that it works as you expect. Vous pouvez marquer les éléments comme étant terminés et supprimer des éléments.You can mark items as complete and remove items. Votre serveur frontal stocke correctement les éléments dans le backend.Your frontend is successfully storing items in the backend! Assez rapide et facile, n’est-ce pas ?Pretty quick and easy, huh?
À ce stade, vous devez avoir un gestionnaire de liste de tâches en cours d’exécution avec quelques éléments que vous avez créés par vous-même !At this point, you should have a running todo list manager with a few items, all built by you! À présent, nous allons apporter quelques modifications et apprendre à gérer vos conteneurs.Now, let's make a few changes and learn about managing your containers.
Si vous examinez rapidement l’extension VS Code, vous devriez voir vos deux conteneurs s’exécuter maintenant (ce didacticiel et votre nouveau conteneur d’application lancé) !If you take a quick look at the VS Code extension, you should see your two containers running now (this tutorial and your freshly launched app container)!
RécapitulatifRecap
Dans cette petite section, vous avez appris les principes fondamentaux de la création d’une image de conteneur et de la création d’un fichier dockerfile pour le faire.In this short section, you learned the very basics about building a container image and created a Dockerfile to do so. Une fois que vous avez créé une image, vous avez démarré le conteneur et vu l’application en cours d’exécution !Once you built an image, you started the container and saw the running app!
Ensuite, vous allez apporter une modification à l’application et apprendre à mettre à jour l’application en cours d’exécution avec une nouvelle image.Next, you're going to make a modification to the app and learn how to update the running application with a new image. En cours de route, vous apprendrez quelques autres commandes utiles.Along the way, you'll learn a few other useful commands.
Étapes suivantesNext steps
Poursuivez avec le didacticiel.Continue with the tutorial!