Skip to content

Add a new microservice to shanoir ng

jcomedouteau edited this page Nov 5, 2019 · 1 revision

Création d’un nouveau micro-service shanoir-ng-[name]

Configuration du projet maven

  • Dupliquer le projet shanoir-ng-template et le renommer shanoir-ng-[name]
  • Modifier le pom.xml pour changer le nom du projet maven et les dépendences associées. Il est possible qu’il manque ensuite des dépendances, elles sont à ajouter au fur et à mesure du developpement.
  • Ajouter le nouveau projet dans le pom.xml de shanoir-ng/shanoir-ng-back

Configuration de Nginx et de la BDD

  • Ajouter une ligne dans shanoir-ng/shanoir-ng-nginx/files/etc/nginx/nginx.conf:

location /shanoir-ng/eeg/ { proxy_pass http://shanoir-ng-[name]:9900/; }

  • Ajouter une liogne dans shanoir-ng/docker-compose/nginx/nginx.conf:

location /shanoir-ng/ { proxy_pass http://[name]:[micro-service-port]/; }

Si on utilise la base de données, il faut créer un nouvel de BDD et ajouter un user.

  • Modifier shanoir-ng/docker-compose/database/1_create_databases.sh pour créer une nouvelle base de données
  • Modifier shanoir-ng/docker-compose/database/2_create_users.sql pour ajouter un utilisateur à la base de données

Configuration du micro-service

Changer les différents fichiers de configuration liés au template:

  • DockerFile
  • import.sql (si utilisation de la BDD)
  • shanoirng_[template]_tables.sql (si utilisation de la BDD)
  • shanoirng_[template].sql (si utilisation de la BDD)
  • application.yml:
    • Définir un nouveau port sur lequel tournera le microservice [micro-service-port]
    • Définir l’utilisation ou non et la connexion à la BDD
    • Définir les modules duquel est dépendant le micro-service

Configurer docker/docker-compose

  • Créer un nouveau dossier shanoir-ng/docker-compose/[name] avec un nouveau fichier DockerFile ici sera définit le port potentiel de debug)
  • Modifier le fichier shanoir-ng/docker_compose.yml, ajouter un nouveau service [name] avec les nouveaux ports configurés

Génération des classes du micro-service

  • Créer un fichier de description du microservice avec https://editor.swagger.io/ puis générer les fichiers (générés dans un zip)
  • Dans les packages sources, remplacer le package template par un nouveau package [Name] avec l’API générée dans le “src/main/java/io/swagger/api/” et le “src/main/java/io/swagger/api/”.
  • Ne copier que les classes spécifiques liées au fichier swagger définit (Les différents modèles et les API, APIController)

Vous pourrez alors organiser les packages pour avoir une hierarchie logique.

  • Renommer la classe ShanoirTemplateApplication par Shanoir[Name]Application

Lancer le micro-service

A ce moment, il sera normalement possible de faire:

  • sudo mvn clean install
  • docker-compose build [name]

Et ensuite

  • docker-compose up –no-deps -d [name]

si shanoir-ng est déjà lancé

  • docker-compose up –build

si shanoir-ng n’est pas encore lancé

On peut trouver les logs du micro-servie comme définis dans le application.yml (généralement:)

  • sudo tail -100 /var/lib/docker/volumes/shanoir-ng_logs/_data/shanoir-ng-[name].log
Clone this wiki locally