Tutoriel : Créer une image conteneur à déployer sur Azure Container Instances

Azure Container Instances permet de déployer des conteneurs Docker sur l’infrastructure Azure sans configurer de machines virtuelles ni adopter de service de niveau supérieur. Dans ce tutoriel, vous allez empaqueter une petite application web Node.js dans une image de conteneur pouvant être exécuté avec Azure Container Instances.

Dans ce premier article de la série, vous allez apprendre à :

  • Cloner le code source de l’application à partir de GitHub.
  • Créer une image conteneur à partir de la source de l’application.
  • Tester l’image dans un environnement Docker local.

Dans les parties deux et trois du tutoriel, vous chargez votre image dans un conteneur Azure Container Registry, et vous la déployez dans Azure Container Instances.

Avant de commencer

Pour suivre ce didacticiel, vous devez satisfaire aux exigences suivantes :

Azure CLI : Azure CLI version 2.0.29 ou ultérieure doit être installée sur votre ordinateur local. Exécutez az --version pour trouver la version. Si vous devez effectuer une installation ou une mise à niveau, consultez Installer Azure CLI.

Docker : ce tutoriel présuppose une compréhension de base des concepts Docker essentiels, tels que les conteneurs, les images conteneur et les commandes docker de base. Pour apprendre les principes de base de Docker et des conteneurs, consultez la vue d’ensemble de Docker.

Docker : Pour suivre ce tutoriel, Docker doit être installé localement. Docker fournit des packages qui configurent l’environnement Docker sur macOS, Windows et Linux.

Important

Étant donné qu’Azure Cloud Shell n’inclut pas le démon Docker, vous devez installer Azure CLI et le moteur Docker sur votre ordinateur local pour suivre ce didacticiel. Vous ne pouvez pas utiliser Azure Cloud Shell pour ce didacticiel.

Obtenir le code d’application

L’exemple d’application dans ce tutoriel est une application web basique générée dans Node.js. L’application dessert une page HTML statique et ressemble à la capture d’écran suivante :

Application de tutoriel affichée dans le navigateur

Utiliser Git pour cloner le référentiel de l’exemple d’application :

git clone https://github.com/Azure-Samples/aci-helloworld.git

Vous pouvez également télécharger l’archive ZIP directement à partir de GitHub.

Générer l’image de conteneur

Le fichier Dockerfile de l’exemple d’application montre comment le conteneur est généré. La génération du conteneur commence par une image officielle Node.js basée sur Linux Alpine, une petite distribution parfaitement adaptée aux conteneurs. Les fichiers d’application sont ensuite copiés dans le conteneur, les dépendances sont installées à l’aide de Node Package Manager, et l’application démarre.

FROM node:8.9.3-alpine
RUN mkdir -p /usr/src/app
COPY ./app/* /usr/src/app/
WORKDIR /usr/src/app
RUN npm install
CMD node /usr/src/app/index.js

Utilisez la commande docker build pour créer l’image de conteneur, et balisez-la aci-tutorial-app :

docker build ./aci-helloworld -t aci-tutorial-app

Le résultat de la commande docker build est similaire à ce qui suit (tronqué pour une meilleure lisibilité) :

docker build ./aci-helloworld -t aci-tutorial-app
Sending build context to Docker daemon  119.3kB
Step 1/6 : FROM node:8.9.3-alpine
8.9.3-alpine: Pulling from library/node
88286f41530e: Pull complete
84f3a4bf8410: Pull complete
d0d9b2214720: Pull complete
Digest: sha256:c73277ccc763752b42bb2400d1aaecb4e3d32e3a9dbedd0e49885c71bea07354
Status: Downloaded newer image for node:8.9.3-alpine
 ---> 90f5ee24bee2
...
Step 6/6 : CMD node /usr/src/app/index.js
 ---> Running in f4a1ea099eec
 ---> 6edad76d09e9
Removing intermediate container f4a1ea099eec
Successfully built 6edad76d09e9
Successfully tagged aci-tutorial-app:latest

Utilisez la commande docker images pour voir l’image générée :

docker images

L’image que vous venez de créer doit apparaître dans la liste :

docker images
REPOSITORY          TAG       IMAGE ID        CREATED           SIZE
aci-tutorial-app    latest    5c745774dfa9    39 seconds ago    68.1 MB

Exécutez localement le conteneur

Avant d’essayer de déployer le conteneur dans Azure Container Instances, exécutez-le localement à l’aide de docker run et vérifiez qu’il fonctionne. Le commutateur -d permet l’exécution du conteneur en arrière-plan, tandis que -p vous permet de mapper un port arbitraire sur votre ordinateur vers le port 80 du conteneur.

docker run -d -p 8080:80 aci-tutorial-app

La sortie de la commande docker run affiche les ID du conteneur en cours d’exécution en cas de réussite de celle-ci :

docker run -d -p 8080:80 aci-tutorial-app
```output
a2e3e4435db58ab0c664ce521854c2e1a1bda88c9cf2fcff46aedf48df86cccf

Accédez maintenant à l’adresse http://localhost:8080 dans votre navigateur pour confirmer l’exécution du conteneur. Une page web similaire à celle ci-dessous doit s’afficher :

Exécution locale de l’application dans le navigateur

Étapes suivantes

Dans ce tutoriel, vous avez créé une image de conteneur qui peut être déployée dans Azure Container Instances et vérifié qu’elle s’exécute localement. Dans ce tutoriel, vous avez effectué les actions suivantes :

  • Clonage de la source de l’application à partir de GitHub
  • Création d’une image conteneur à partir de la source de l’application
  • Test de l’exécution locale du conteneur

Passez au tutoriel suivant de la série pour en savoir plus sur le stockage d’images de conteneur dans Azure Container Registry :