Il est possible d’exécuter facilement l'application en local grâce à Docker et aux fichiers Dockerfile et docker-compose.yml présents à la racine du projet sur Github.
Pré-requis
Pour cela il faut avoir Docker installé sur sa machine et avoir récupéré le projet :
git clone https://github.com/EsupPortail/esup-mdw-pegase.git
Créer l'image Docker
A la racine du projet, lancer la commande :
docker build -t esup-mdw-pegase:2.2.2 .
Attention : Remplacer 2.2.2 par le numéro de la version actuelle de mdw-pegase (cf revision dans le fichier pom.xml)
On vérifie que l'image est créée :
docker image ls
Configurer les conteneurs
A la racine du projet, modifier le fichier docker-compose.yml pour y indiquer la bonne version de l'image de mdw-pegase à utiliser (celle créée ci-dessus).
Toujours à la racine du projet, créer un dossier ".docker".
Dans ce répertoire créer 2 dossiers :
- esup-mdw-pegase
- mariadb-data
Dans le répertoire "esup-mdw-pegase" créer un fichier "application.properties" basé sur src/main/resources/application-example.properties
Indiquer la configuration à utiliser dans ce fichier (cf Installation). Concernant la connexion à la bdd indiquer :
spring.datasource.url = jdbc:mysql://mariadb:3306/mdwpegase?serverTimezone=Europe/Paris spring.datasource.username = root spring.datasource.password = mypass
Démarrer les conteneurs
Lancer la commande :
docker-compose -f docker-compose.yml -p mdw-pegase up -d
Cela va démarrer les conteneurs mariadb (contenant la bdd), phpmyadmin (pour consulter la bdd facilement), et mdw-pegase.
On accède à PhpMyAdmin via : http://localhost:8000/
On accède à MDW via : http://localhost:8080/
Si MDW ne démarre pas à cause d'une bdd non accessible :
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure ... Caused by: com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure ... Caused by: java.net.ConnectException: Connection refused
C'est potentiellement dû au fait que la base n'a pas eu le temps de se créer avant que MDW ne se lance.
Il suffit donc de restart le conteneur de mdw-pegase