Xylos brands

Comment construire un conteneur ?

Dans le billet de blog précédent, nous avons abordé l’emballage d’applications dans un conteneur. Nous avons utilisé une application web simple capable de reconnaître des images et nous avons exécuté cette application sur un PC et un Azure Container Instances (ACI). Dans ce deuxième billet de blog, nous examinerons plus avant la construction et l’emballage de l’application.

1. Quel est votre point de vue en tant que développeur ?

Très peu de choses changent pour le développeur, bien que le choix du système d’exploitation joue évidemment un rôle décisif. Lorsque nous créons de nouvelles applications chez Xylos, nous choisissons généralement Linux. Nos experts Xylos et ceux de nos marques comme Neo Learning et Bagaar, utilisent des langages comme PHP, JavaScript (Node.js), .NET, .NET Core, Python et Go. À part le.NET original, tous ces langages supportent Linux et les conteneurs Linux.

Nous avons écrit l’application web du billet du blog antérieur en Go qui prend en charge Windows, Mac et Linux. Vous pouvez compiler le code Go avec une simple commande :

go build -o /usr/bin/app .

La commande ci-dessus résulte en un exécutable Linux appelé « app », dans le répertoire /usr/bin. Pour activer l’application web, lancez l’« app ». L’application web est alors disponible sur http://localhost:9090 ou, si un certificat SSL a été configuré, sur https://localhost. Il est important de noter que cette application web ne tourne que sur Linux et MacOS, car elle contient un certain nombre de dépendances qui ne fonctionnent pas avec Windows.

En tant que développeur, vous pouvez tester et exécuter l’application localement sans intervention de conteneurs. N’oubliez pas de jeter un coup d’œil au code.

2. Comment construire un conteneur ?

En tant que développeur, vous avez toutes les cartes en main pour emballer l’application web dans un conteneur. Il peut utiliser son propre poste de travail pour cela. Afin de pouvoir construire un conteneur, les éléments suivants sont nécessaires :

  • l’installation de Docker Desktop : il prend en charge Mac, Linux et Windows ;
  • un Dockerfile : une recette avec des instructions pour construire l’image de conteneur.

Pour plus de détails, lisez le Dockerfile avec des instructions pour l’application web.

Petite feuille de route de ce Dockerfile

  • Commencez à partir d’une image existante et développez à partir de celle-ci. Ici, vous utilisez l’image tensorflow/tensorflow:1.12.0 qui contient tous les logiciels nécessaires pour exécuter un modèle d’apprentissage profond qui peut reconnaître les images.
  • Installez la bibliothèque « TensorFlow C » dans l’image de conteneur. Go et la prise en charge TensorFlow pour Go en ont besoin.
  • Installez Go dans l’image de conteneur.
  • Construisez l’application web et enregistrez l’exécutable « app » dans /usr/bin.
  • Assurez-vous que « app » est lancé au démarrage du conteneur. La dernière commande du Docker (CMD [ "app" ]) s’en charge.

En plaçant le Dockerfile dans le même répertoire que le code, vous pouvez utiliser la commande suivante pour construire l’image de conteneur :

docker build -t xylos/nasnet .

Cette commande téléchargera l’image tensorflow/tensorflow:1.12.0 si vous ne l’avez pas encore utilisée. Après le téléchargement, exécutez toutes les instructions dans le Dockerfile et enregistrez le résultat dans une nouvelle image de conteneur appelée xylos/nasnet.

Vous pouvez maintenant tester l’image de conteneur sur votre poste de travail avec la commande suivante :

docker run -p 80:9090 -d xylos/nasnet

La commande ci-dessus rend l’application web disponible sur http://localhost. Si tout fonctionne comme vous le souhaitez, vous pouvez enregistrer l’image de conteneur dans un répertoire Docker. Nous le faisons avec la commande ci-dessous :

docker push xylos/nasnet

Docker sait que, dans ce cas, nous voulons utiliser un registre public et demandera des informations de connexion à l’utilisateur Xylos.

3. Et qu’en est-il des registres privés?

Lorsque nous créons une application comme OASE, nous ne plaçons pas l’image de conteneur sur Docker Hub, mais dans un Azure Container Registry (ACR) privé. ACR présente les avantages suivants :

  • géoréplication : réplication du registre sur plusieurs régions d’Azur ;
  • stockage d’images proche de votre infrastructure : économisez sur les coûts liés au trafic réseau ;
  • authentification Azure AD.

Un registre privé est entièrement compatible avec les outils Docker existants afin que les développeurs puissent continuer à utiliser leurs outils familiers.

4. Conclusion

Nous avons examiné la façon dont un développeur peut construire une image de conteneur et la stocker dans un registre de conteneur. Vous pouvez construire, tester et télécharger l’image de conteneur depuis votre propre poste de travail. Pour mettre l’application en production, vous avez besoin de connaissances sur Kubernetes et CI/CD (intégration continue/déploiement continu).

Alors, prêt pour la prochaine étape ? Dans les billets de blog suivants, nous nous pencherons sur Azure Kubernetes Service (AKS) pour mettre les conteneurs en production et sur Azure DevOps comme solution CI/CD.

Partager cet article de blog

Laissez une réponse

Votre adresse email ne sera pas publiée. Les champs requis sont indiqués.