Skip to main content

Déploiement dans un environnement de développement

Open ENT V3 fonctionne sur une architecture micro-services et chaque service utilise sa propre JVM.

Deux options sont possibles pour développer facilement avec Open ENT v3.

  • Développement 100% en local :

    • Utilisation d'un minikube (Cluster Kubernetes pour du développement)
    • Utilisation de docker-compose
  • Développement en mode hybride :

    • Utiliser des services et des modules distants pour les modules déjà développés,
    • Utiliser une JVM en local pour le module en cours de développement

Développement en mode 100% local

L'application doit être construite pour supporter le développement en mode local. Le développement en mode local nécessite 3 étapes :

  • 1/ la configuration du système de fichier permettant aux différents modules de partager des données.
  • 2/ le lancement des services (bases de données, moteur de recherche…) avec docker-compose
  • 3/ le launcher pour lancer l'application Open ENT avec tous les modules par défaut

Le lancement des services dans docker-compose et le lancement du launcher ont besoin du répertoire de données pour être démarrés.

1/ Données de démarrage

Le Starter permet de lancer Open ENT v3 en toute facilité en contenant des données d'exemple.

Cette solution est une alternative à springboard d'Open ENT NG et doit être utilisée uniquement à des fins de développement.

Accès aux données nécessaires à Open ENT

Le répertoire starter contient les fichiers nécessaires au bon fonctionnement d'Open ENT v3. Il est accédé par les différents modules Open ENT v3 avec un point de montage /open-ent/data

Dans le cadre de développement, il est nécessaire de créer ce point de montage avec votre propre arborescence.

Exemple :

Dans cette exemple le répertoire GitHub du projet open-ent a été créé dans le répertoire /dev/ent/open-ent Après le clone, le répertoire /dev/ent/open-ent/starter est disponible. C'est ce répertoire sur lequel un alias est créé pour permettre aux modules d'open-ent d'accéder aux données.

git clone https://github.com/pass-tech-developpement/open-ent
mkdir /open-ent
sudo ln -s /dev/ent/open-ent/starter /open-ent/data

2/ Docker-compose

Docker Compose est un outil de Docker permettant de définir et de gérer des applications multi-conteneurs. Il simplifie la gestion des différents conteneurs interconnectés en utilisant un seul fichier de configuration.

Docker-compose permet de démarrer les services (Neo4j, PostgreSQL, MongoDB...).

Il ne permet par de démarrer les modules Open ENT (Directory, Admin, Infra, Catalogue...).

Démarrer et arrêter les services

Démarrer

cd starter
docker-compose -f docker-compose.yml up

Se connecter sur Neo4J pour créer le mot de passe : http://localhost:7474/browser/ Utiliser le mot de passe par défaut neo4j/neo4j et créer le compte openent/openent

Arrêter

cd starter
docker-compose -f docker-compose.yml stop

Détruire les containers et les redémarrés pour prendre en compte les modifications dans le docker-compose.yml

cd starter
docker-compose -f docker-compose.yml down

Il sera nécessaire de refaire la conf Neo4j à chaque suppression des containers

Les fichiers de configurations suivants sont utilisés par les containers :

  • NEO4J : la configuration starter/neo4j-conf/neo4j.conf permet de faire fonctionner Neo4j sans sécurité
  • POSTGRESQL : starter/docker-entrypoint-initdb.d/init.sql permet la création d'un utilisateur apps

Vérification de la disponibilité des services

Voici un exemple de déploiement des containers dans Rancher Desktop

Rancher Desktop

3/ Launcher

Open ENT V3 possède 2 launchers pour faciliter le développement des micro-services :

  • un launcher Quarkus pour les modules Open ENT V3
  • un launcher Vert.x pour les modules Open ENT NG

Uniquement le launcher Quarkus est détaillé dans cette partie.

Construction de l'application

La construction de l'application est nécessaire en mode local à partir du répertoire principal

mvn install -Dquarkus.container-image.build=true -Dquarkus.container-image.tag=1.0.0 -Dquarkus.container-image.push=false

(voir plus de détail dans la partie développement)

Lancement de l'application

Le launcher a besoin des services démarrés par le docker-compose pour fonctionner qu'il faut démarrer au préalable.

Exécuter l'application en mode développement qui permet le codage en direct en utilisant :

cd launcher
mvn quarkus:dev
Lancement du Launcher sur le port 8090

Tous les tests réalisés en local sont executés sur le port 8090. Il est préférable de le préciser dans la ligne de commande

mvn quarkus:dev -Dquarkus.http.port=8090
Commandes équivalentes

Toutes les commandes mvn commeçant par quarkus peuvent être remplacé par l'utilisation de la ligne de commande quarkus avec le CLI (Command line interface)

quarkus dev -Dquarkus.http.port=8090