Lancer Docker Compose¶
PerfShop est livré avec trois fichiers Docker Compose distincts. Chacun cible un scénario de déploiement précis. Cette page décrit lequel choisir, comment le démarrer, et comment gérer le cycle de vie de la stack.
Les trois fichiers compose¶
| Fichier | Cible | Stratégie d'image |
|---|---|---|
docker-compose.yml |
Production — NAS Synology, VPS production, registry d'images | Utilise des images pré-construites publiées sur un registry |
docker-compose.desktop.yml |
Docker Desktop (Windows, macOS) | Build local des images avec optimisations Docker Desktop |
docker-compose.build.yml |
Linux local, VPS Unix, CI | Build local sans optimisations spécifiques Docker Desktop |
Choisir le bon fichier
- Sur Windows / macOS avec Docker Desktop : utilisez
docker-compose.desktop.yml - Sur Linux en local ou sur un VPS : utilisez
docker-compose.build.yml - En production NAS : utilisez
docker-compose.ymlavec.env.production
Première mise en route¶
1. Copier le fichier d'environnement¶
Ce fichier contient toutes les variables de configuration avec des valeurs par défaut raisonnables pour un déploiement local. Vous pouvez le laisser en l'état pour un premier démarrage, ou éditer les valeurs que vous voulez personnaliser (mots de passe, langue, ports, URL publiques).
Points à vérifier selon votre situation :
HOST_IP— garderlocalhostsur Docker Desktop ; mettre l'IP de l'hôte si vous voulez que d'autres postes puissent accéderPERFSHOP_LANG—fr(défaut) ouenADMIN_PASSWORD— à changer pour toute exposition publiqueDB_PASSWORD,DB_ROOT_PASSWORD— idemPERFSHOP_LICENSE_KEY— collez votre clé PerfShop ici pour démarrer avec la licence déjà active (voir Système de licence)
Voir la référence des variables d'environnement pour le détail exhaustif.
2. Démarrer la stack¶
L'option -d démarre en mode détaché (en arrière-plan). L'option --build force la reconstruction des images locales — nécessaire au premier démarrage et après chaque modification de code.
Le premier démarrage télécharge les images de base (MySQL, Grafana, Prometheus, Loki, Tempo, OpenSearch, Selenium…), ce qui peut prendre plusieurs minutes selon votre connexion. Les démarrages suivants sont beaucoup plus rapides.
3. Attendre que les healthchecks passent¶
Plusieurs services ont des dépendances explicites via depends_on: { condition: service_healthy }. Le backend attend MySQL, le monitoring attend le backend, etc. Compose gère l'ordre de démarrage automatiquement.
Vous pouvez suivre l'état avec :
Tous les services doivent passer de starting à healthy en 30 à 90 secondes selon la machine. Le plus lent est souvent perfshop-app (Spring Boot avec Flyway qui exécute V1-V10 sur une base vide).
4. Accéder à la welcome page¶
Une fois la stack démarrée, ouvrez dans un navigateur :
Cette page liste toutes les URLs des services exposés avec leurs identifiants par défaut. Voir Page d'accueil welcome.
Cycle de vie¶
Arrêter la stack¶
Les conteneurs sont arrêtés et supprimés. Les volumes persistants (base de données, données Grafana, dashboards provisionnés, logs Loki, traces Tempo, profils Pyroscope) sont conservés.
Arrêter et supprimer les volumes¶
Ajoute -v pour supprimer aussi les volumes — toute la base de données, les dashboards Grafana personnalisés, les logs historiques seront perdus. À utiliser pour repartir d'un état propre.
Redémarrer un seul service¶
Utile après un changement de configuration backend sans toucher aux autres services.
Voir les logs¶
# Tous les services
docker compose logs -f
# Un seul service
docker compose logs -f perfshop-app
# Les 100 dernières lignes
docker compose logs --tail=100 perfshop-app
L'option -f fait du tail continu.
Reconstruire une seule image¶
Utile après modification du code d'un seul composant sans vouloir tout reconstruire.
Volumes persistants¶
Les données suivantes sont conservées entre redémarrages :
| Volume Docker | Service | Contenu |
|---|---|---|
mysql-data |
perfshop-db |
Base PerfShop (users, products, orders, licence, sessions…) |
grafana-data |
perfshop-grafana |
Utilisateurs Grafana, dashboards personnels |
prometheus-data |
perfshop-prometheus |
Historique des métriques (rétention par défaut 15 jours) |
loki-data |
perfshop-loki |
Historique des logs |
tempo-data |
perfshop-tempo |
Historique des traces |
pyroscope-data |
perfshop-pyroscope |
Profils CPU et mémoire |
squash-db-data |
perfshop-squash-db |
Base Squash TM |
opensearch-data |
perfshop-opensearch |
Index OpenSearch |
forgejo-data |
perfshop-forgejo |
Dépôts Git locaux |
Dépendances entre services¶
Docker Compose démarre les services dans l'ordre défini par depends_on. Le graphe simplifié :
flowchart TD
db[perfshop-db]
app[perfshop-app]
front[perfshop-frontend]
mon[perfshop-monitoring]
chaos[perfshop-chaos-admin]
welcome[perfshop-welcome]
prom[perfshop-prometheus]
graf[perfshop-grafana]
loki[perfshop-loki]
tempo[perfshop-tempo]
pyro[perfshop-pyroscope]
db --> app
app --> front
app --> mon
app --> chaos
prom --> graf
loki --> graf
tempo --> graf
pyro --> graf
app -.->|push metrics| prom
app -.->|push logs| loki
app -.->|push traces| tempo
app -.->|push profiles| pyro
Les services de stack QA (Selenium, Squash, Forgejo, Scripts UI, JMeter UI) sont largement indépendants du cœur PerfShop et démarrent en parallèle.
Healthchecks¶
Chaque service critique expose un healthcheck HTTP ou une commande shell que Docker interroge toutes les quelques secondes :
| Service | Endpoint / commande |
|---|---|
perfshop-app |
GET /actuator/health |
perfshop-frontend |
curl http://localhost |
perfshop-db |
mysqladmin ping |
perfshop-grafana |
GET /api/health |
perfshop-prometheus |
GET /-/healthy |
L'option condition: service_healthy dans depends_on fait que Compose attend que le healthcheck soit vert avant de démarrer les services dépendants.
Voir aussi¶
- Build backend — itérer sur le backend hors conteneur
- Build frontend — itérer sur le frontend hors conteneur
- Docker Compose (architecture) — vue d'ensemble architecturale
- Variables d'environnement — référence exhaustive