Bonjour,
Je viens de mettre en place un environnement de développement MapStore2 afin de procéder à des modifications dans le coeur. Je me dis que ca peut en intéresser d'autres.
Pour faire des développements dans MapStore2, nous n'avons pas besoin de MapStore2-georchestra.
Notre environnement devra comprendre 2 services frontend et backend.
# BACKEND
> Prérequis : Docker
Pour le backend, j'ai choisi d'utiliser docker pour la simplicité de déploiement uniquement. Comme je ne vais pas modifier le backend, je n'ai pas plus d'intérêt à utiliser une autre solution.
Pour ne pas avoir à recréer mes contextes et utilisateurs, j'opte pour l'installation docker-compose + PostgreSQL + volume associé.
Le README est relativement clair à ce sujet :
https://github.com/geosolutions-it/MapStore2?tab=readme-ov-file#-run-the-mapstore-with-postgis-through-docker-compose-in-the-local-environment
Avant de lancer les actions Docker, j'ai eu quelques soucis de connexion entre mapstore et postgres. J'ai donc procédé en deux groupe d'actions.
Etape 1 - conteneurs postgres / Proxy :
- Installer docker / compose / etc..
- Cloner le dépôt MapStore2
- ouvrir docker-compose.yml
- commenter la section mapstore
- exécuter la commande : docker compose up -d
Etape 2 - conteneur mapstore
- Ouvrir le fichier docker-compose.yml
- décommenter la section mapstore
- adapter les login / password pour la ligne command du wait-for-postgres
- exécuter la commande : docker compose up -d
Vous devez maintenant avoir une stack complète front + backend par défaut accessible sur localhost/mapstore.
Bien que fonctionnel, le frontend utilisé ici est issu d'un WAR et non d'un code source sur lequel nous allons développer.
# FRONTEND
> Prérequis : Node.js v16
Pour démarrer le frontEnd, c'est relativement simple :
- on installe Node.js version 16.x (via NVM c'est plus simple)
- on install via npm install
Mais en l'état, le frontend n'arrivera pas à utiliser le backend.
On doit donc modifier les constantes en haut du fichier devServer.js.
Dans mon cas, le backend (par défaut) fonctionne sur
http://localhost/mapstore.
J'ai donc adapté le fichier tel que :
const port = "";
const protocol = "http";
const host = "localhost";
const MAPSTORE_BACKEND_BASE_URL = (protocol + "://" + host + ":" + port);
const MAPSTORE_BACKEND_BASE_PATH = "/mapstore";
const MAPSTORE_BACKEND_URL = MAPSTORE_BACKEND_BASE_URL + MAPSTORE_BACKEND_BASE_PATH;
Par défaut, ce fichier prend en compte des variables d'environnement :
Je les ai volontairement supprimé car je peux avoir plusieurs instances de développement / de test.
On peut maintenant démarrer le front qui utilisera le backend docker :
- exécute la commande npm run fe:start
Maintenant on peut accéder au frontend sur localhost:8081 qui utilisera le backend accessible sur localhost/mapstore.
A noter qu'il est possible de réutiliser le code source frontend que l'on modifie dans le docker-compose comme on peut le faire avec docker georchestra.
Gaëtan Bruel
JDev