Initialiser un projet Angular/Java avec Docker et Jhipster

Initialiser un projet est l’étape cruciale pour le bon déroulement du projet. Parfois, il arrive que l’on soit amené à développer sur plusieurs projets en même temps avec des versions de composants techniques différents. C’est pourquoi il faut apporter une attention particulière à cette phase d’initialisation.

 Initialiser un projet est l’étape cruciale pour le bon déroulement du projet. Parfois, il arrive que l’on soit amené à développer sur plusieurs projets en même temps avec des versions de composants techniques différents. C’est pourquoi il faut apporter une attention particulière à cette phase d’initialisation.  Dans cet article, je vais vous présenter une architecture de développement d’une application Angular/Java avec Docker et Jhipster que j’ai mise en place lors de mon dernier projet. J’ai utilisé Jhipster pour l’initialisation du projet Java et Docker pour gérer les problématiques de versions des outils de développement.    

Utilisation de Docker pour initialiser le projet Angular 

L’une des grandes problématiques des projets JS aujourd’hui est la grande diversité des versions de Node/npm entre différents projets. 

Travailler simultanément sur plusieurs projets qui se basent sur différentes versions de Node, Angular, ou Angular CLI peut s’avérer assez problématique pour des raisons de non-compatibilité, surtout si certaines ont été installées de manière globale.  C’est pour résoudre cette problématique que Docker intervient. L’idée est de se créer une image Docker contenant les versions de Node, Angular CLI, npm/Yarn souhaitées, puis de lancer cette image dans un conteneur au sein duquel nous allons exécuter les commandes ng et npm/Yarn.  

Le code source est toujours sur notre machine mais monté dans le conteneur grâce aux volumes Docker.   

 

 

Et Jhipster ? 

Jhipster est un outil qui permet d’initialiser totalement un projet Java avec un front Angular ou React. Ici je ne l’utilise que pour la partie Java mais il peut être très utile pour initialiser et faire vivre une application front/back complète, que celle-ci soit monolithique ou orientée microservice. 

L’avantage de Jhipster est qu’il va pouvoir configurer toutes les couches de notre application pour que celle-ci soit clé en main, de la base de données à la couche web.  De plus, il initialise le projet avec un Maven embarqué et des fichiers docker-compose pour nos dépendances comme Postgres/Elasticsearch.  

L’un des points qui rend le plus service est toute la partie connexion et sécurité, qui est déjà mise en place en fonction de ce que vous souhaitez au lancement de Jhipster. Par exemple, lors de l’initialisation de mon dernier projet en date, j’avais besoin d’une connexion avec des comptes Microsoft. Pour cela j’ai seulement eu à dire à Jhipster que je souhaitais une connexion Oauth2 puis de modifier les propriétés correspondantes dans mon fichier de configuration

Petit bonus, on peut tout comme Node et npm, exécuter Jhipster dans un conteneur Docker et ainsi ne pas avoir à l’installer en global sur la machine.   

Au final, qu’avons-nous gagné avec cette architecture ? 

Grâce à cette dernière, j’ai pu sereinement travailler sur plusieurs projets en parallèle avec des versions différentes, car chacune est exécutée dans un environnement Docker qui lui est propre. On peut même réutiliser les images si certains projets utilisent des versions identiques. J’ai aussi constaté une initialisation de projet bien plus rapide. On peut ainsi attaquer plus rapidement les besoins métiers. De plus, il est beaucoup plus facile pour un nouveau développeur d’arriver sur le projet car il a uniquement à installer Docker et la bonne version de Java.   

Maintenant, à vous de jouer !