Build backend¶
Cette page explique comment construire et exécuter le backend Spring Boot en dehors de Docker, pour itérer rapidement pendant le développement avec le hot reload de votre IDE.
Stack cible¶
- Spring Boot 3.2
- Java 21 LTS
- Maven 3.9+
- MySQL 8 (conteneur ou natif)
Voir Prérequis pour les versions exactes.
Build avec Maven¶
Depuis la racine du dépôt :
Le build compile le code Java, exécute les tests JUnit, et produit un JAR exécutable dans backend/target/perfshop-0.1.0-beta.jar (le nom exact dépend de la version déclarée dans pom.xml).
Sauter les tests¶
Pour un cycle d'itération plus rapide :
À n'utiliser qu'en développement local — la CI et les builds de release doivent toujours exécuter les tests.
Build avec le script fourni¶
Un script build.sh est fourni à la racine du dépôt pour construire à la fois le backend et les images Docker :
Son équivalent Windows est build.bat. Consultez le contenu du script pour le détail des étapes exécutées.
Lancer en local (sans Docker)¶
Démarrer la base MySQL¶
Le plus simple est de démarrer uniquement le conteneur MySQL depuis le compose principal :
Cela lance MySQL 8 sur localhost:19306 avec les credentials définis dans .env. Flyway exécutera automatiquement V1 à V10 au premier démarrage du backend.
Alternativement, vous pouvez utiliser une installation MySQL native si vous préférez — il suffit de créer une base perfshop et un utilisateur avec les droits nécessaires.
Lancer Spring Boot¶
Depuis backend/ :
Spring Boot se lance sur le port 8080 par défaut (pas 9080 — c'est le mapping Docker Compose qui redirige 9080:8080 en mode conteneurisé ; en local, on utilise le port interne directement).
Lancer le JAR directement¶
Si vous préférez lancer le JAR packagé :
Configuration par variables d'environnement¶
Le backend est entièrement configurable par variables d'environnement. Les plus importantes :
| Variable | Défaut | Rôle |
|---|---|---|
SPRING_DATASOURCE_URL |
jdbc:mysql://localhost:19306/perfshop |
URL JDBC de la base |
SPRING_DATASOURCE_USERNAME |
perfshop |
Utilisateur MySQL |
SPRING_DATASOURCE_PASSWORD |
perfshop123 |
Mot de passe MySQL |
PERFSHOP_LANG |
fr |
Langue active (fr ou en) |
PERFSHOP_ADMIN_EMAIL |
admin@perfshop.fr |
Email du superadmin (bootstrap) |
PERFSHOP_ADMIN_PASSWORD |
perfshop |
Mot de passe du superadmin (bootstrap) |
PERFSHOP_LICENSE_KEY |
(vide) | Clé de licence à précharger au démarrage |
CORS_ALLOWED_ORIGINS |
http://localhost:9091,... |
Origins autorisés pour CORS |
La liste complète est dans la référence des variables d'environnement.
Windows PowerShell¶
$env:SPRING_DATASOURCE_URL = "jdbc:mysql://localhost:19306/perfshop"
$env:PERFSHOP_LANG = "fr"
mvn spring-boot:run
Unix / macOS¶
export SPRING_DATASOURCE_URL=jdbc:mysql://localhost:19306/perfshop
export PERFSHOP_LANG=fr
mvn spring-boot:run
Avec un fichier .env¶
Ou plus simplement, utilisez votre .env existant et un plugin IDE qui l'injecte (IntelliJ, VS Code). Le application.yml de Spring Boot référence les variables d'env standard via ${VAR:default}.
Vérifier que le backend est up¶
Une fois démarré, trois endpoints sont utiles pour vérifier l'état :
# Health basique
curl http://localhost:8080/actuator/health
# → {"status":"UP"}
# Infos build
curl http://localhost:8080/actuator/info
# Métriques Prometheus
curl http://localhost:8080/actuator/prometheus | head -20
Le port management 9090 utilisé par certains endpoints sensibles (heap dump, thread dump) n'est exposé qu'en mode conteneurisé.
Hot reload et dev loop¶
Spring Boot DevTools est inclus dans les dépendances de développement. Quand il détecte un changement dans target/classes/, il redémarre automatiquement le contexte applicatif — beaucoup plus rapide qu'un restart complet de JVM.
Pour bénéficier du hot reload depuis IntelliJ :
File → Settings → Build → Compiler: cocher Build project automaticallyFile → Settings → Advanced Settings: cocher Allow auto-make to start even if developed application is currently running
Depuis VS Code avec l'extension Spring Boot Dashboard, le redémarrage automatique est activé par défaut dès que DevTools est présent.
Tests unitaires¶
Les tests utilisent JUnit 5 et Spring Boot Test. Ils tournent contre une base H2 en mémoire quand c'est possible, ou contre un MySQL Testcontainers pour les tests d'intégration plus poussés.
Déboguer¶
Pour attacher un debugger IDE au backend :
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005"
Puis dans votre IDE, créez une configuration Remote JVM Debug pointant sur localhost:5005.
Construire l'image Docker sans Docker Compose¶
Si vous voulez construire juste l'image Docker du backend sans l'ensemble de la stack :
Le Dockerfile est un multi-stage qui compile avec Maven puis copie le JAR dans une image eclipse-temurin:21-jre minimaliste.
Voir aussi¶
- Build frontend — pour faire la même chose côté React
- Lancer Docker Compose — si vous préférez tout en conteneur
- Variables d'environnement — référence exhaustive