Créer une base de données MongoDB dans Azure avec un container

Auteur du billet de blog : Nicolas Hilaire - Neotech Solutions

Nicolas Hilaire

Consultant .NET
  Publié le jeudi 29 septembre 2016

Artisan logiciel particulièrement intéressé par les technologies .NET. Polyvalent et curieux, je suis néanmoins à l'écoute des autres technologies du marché. MVP (Microsoft Most Valuable Professional) de 2007 à 2014, je suis également auteur d'un ouvrage pour apprendre le C#, à destination des débutants et de plusieurs MOOCs sur le C#, Windows Phone ou ASP.NET MVC...

Grâce à Azure, nous pouvons créer facilement des machines virtuelles. Et grâce à Docker, nous avons accès à de nombreux containers déjà configurés. C’est très pratique lorsque l’on veut tester rapidement un produit sans s’embêter et passer du temps à le configurer. Nous allons voir dans ce billet comment créer une base de données MongoDB dans Azure grâce à Azure Container. Et en bonus, nous y accéderons depuis une application C#.

 

Créer la machine virtuelle

Nous allons commencer par créer la machine virtuelle avec docker et mongodb, pour cela rendez-vous sur votre portail Azure, Cliquez sur New => Containers => See all pour voir tous les containers disponibles :

 

 

Puis dans la liste des containers, cherchez mongo puis cliquez sur Create :

 

 

Vous entrez dans la phase classique de création de VM, où vous devez spécifier un nom, un type d’authentification, un groupe de ressources, etc :

 

 

Choisissez ensuite la taille de votre VM ; on peut trouver une VM basique pour 40€ par mois :

 

 

Vous pouvez laisser les paramètres optionnels comme tels :

 

 

Puis, c’est parti pour la création :

 

 

Patientons quelques minutes, le temps que la VM se crée… L’avantage dans un billet de blog, c’est que les minutes passent vite :). Tic-tac, tic-tac …

 

Configuration de la VM

 

Et voilà, nous pouvons désormais passer à la configuration de la VM, car nous devons ouvrir le port de mongo, à savoir le 27017. Rendez-vous sur le blade de la VM, et cliquez sur Network interfaces, puis sur l’interface :

 

 

Cliquez ensuite sur Network security group, puis sur le groupe :

 

 

Cliquez ensuite sur Inbound security rules et sur add :

 

 

Il n’y a plus qu’à ajouter une nouvelle règle et à choisir MongoDB dans la liste déroulante « services » :

 

 

Cliquez sur OK, et quelques secondes plus tard, la configuration est active. Maintenant que le port est ouvert, nous pouvons nous connecter à l’instance de MongoDB.

 

Ajouter un user MongoDB

 

Mais avant ça, nous allons ajouter un user mongoDB afin de ne pas nous connecter sans authentification. Il vous faut récupérer l’ip de la VM :

 

 

et vous connecter en SSH (avec Putty par exemple) :

 

 

Un petit

 

 

vous permet de vous assurer que le container tourne et vous permet de récupérer son identifiant :

 

 

Connectez-vous au container avec

 

 

Ensuite, c’est du mongodb classique, démarrez mongo avec la commande mongo. Puis on va créer un user, bon, on va faire simple, je vais créer un user admin et c’est tout. Normalement, vous devriez créer des users non admin en plus :

 

 

Un peu de code

 

C’est suffisant pour nous, il est temps de faire un peu de code. Démarrez un Visual Studio et ajoutez une référence NuGet à Mongodb :

 

 

Puis je vais utiliser le code suivant pour me connecter, ajouter un document dans une collection et le récupérer :

 

 

J’ai utilisé ici la version synchrone des méthodes car je suis dans une application console.

Et voilà un petit aperçu du résultat dans robomongo :

 

 

Plutôt facile et rapide non ?

 

Conclusion

 

Dans ce billet, nous avons pu voir comment créer facilement une VM contenant une image docker d’un MongoDB fonctionnel. Et tout ça avec un minimum de configuration. Plutôt pratique pour un petit POC ou un petit test.

Je ne recommanderais pas d'utiliser cette technique pour de la production car nous n'avons pas la main sur le fichier docker. Si vous voulez partir sur une solution de ce genre pour de la production, je vous conseille d'utiliser plutôt une machine virtuelle avec un docker, de récupérer un docker file pour mongodb, de le refaire et éventuellement de le customiser. Et pourquoi pas de jeter un coup d'œil à Azure Container Service.

Commentaires