Mise en production
Mise en production
Ce guide décrit le déploiement de TrickSpin sur un VPS OVH avec Docker. L'architecture utilise Traefik comme reverse proxy pour gérer le routage et les certificats TLS (Let's Encrypt).
Architecture des services
| Service | Profil | Accès |
|---|---|---|
front-prod | prod | https://nom-de-domaine.fr via Traefik |
back-prod | prod | https://api.nom-de-domaine.fr via Traefik |
doc-prod | prod | https://doc.nom-de-domaine.fr via Traefik |
database-prod | prod | Réseau interne uniquement |
traefik | traefik | Ports 80 et 443 |
Prérequis sur le VPS
Installer Docker
curl -fsSL https://get.docker.com | sh
Pointer le DNS vers le VPS
Avant de démarrer Traefik, créer les enregistrements DNS suivants chez OVH (zone DNS du domaine) :
| Type | Nom | Valeur |
|---|---|---|
| A | @ | IP du VPS |
| A | api | IP du VPS |
| A | doc | IP du VPS |
Installation
1. Cloner le projet
git clone https://github.com/Charline-Heuguet/TrickSpin
cd TrickSpin
2. Variables d'environnement
cp .env.example .env
Éditer le fichier .env et renseigner toutes les valeurs :
nano .env
Variables base de données
| Variable | Description | Exemple |
|---|---|---|
MYSQL_ROOT_PASSWORD | Mot de passe root MySQL | un-mot-de-passe-fort |
MYSQL_DATABASE | Nom de la base de données | trickspin |
MYSQL_USER | Utilisateur MySQL applicatif | trickspin_user |
MYSQL_PASSWORD | Mot de passe de cet utilisateur | un-autre-mot-de-passe |
Variables production
| Variable | Description | Exemple |
|---|---|---|
DOMAIN | Nom de domaine principal | trickspin.fr |
ACME_EMAIL | Email pour les certificats Let's Encrypt | contact@trickspin.fr |
API_BASE | URL publique de l'API (utilisée par le front) | https://api.trickspin.fr |
.env. Il est déjà dans le .gitignore.3. Lancer le build et démarrer
Sans Traefik (accès direct par ports, pour vérifier que tout fonctionne) :
make prod-build
Avec Traefik (configuration finale avec HTTPS et nom de domaine) :
docker compose --profile prod --profile traefik up -d --build
Le premier démarrage peut prendre quelques minutes : build des images, warmup du cache Symfony, et émission des certificats Let's Encrypt.
4. Initialiser les données
Une fois les conteneurs démarrés, lancer les migrations et importer les données métier :
# Migrations (lancées automatiquement au démarrage, mais vérifiable)
docker compose --profile prod exec back-prod php bin/console doctrine:migrations:status
# Importer les tricks depuis le CSV
docker compose --profile prod exec back-prod php bin/console app:import-tricks --no-interaction
# Importer les grabs
docker compose --profile prod exec back-prod php bin/console app:import-grabs --no-interaction
Commandes utiles en production
| Commande | Description |
|---|---|
make prod | Démarrer les conteneurs prod |
make prod-build | Rebuild et démarrer |
make prod-down | Arrêter les conteneurs prod |
docker compose --profile prod logs -f | Suivre tous les logs |
docker compose --profile prod logs -f back-prod | Logs du backend |
docker compose --profile prod exec back-prod php bin/console <cmd> | Commande Symfony |
Mise à jour
Pour déployer une nouvelle version :
git pull
docker compose --profile prod --profile traefik up -d --build
Les migrations sont appliquées automatiquement au démarrage du conteneur via l'entrypoint.
Vérification
| Service | URL |
|---|---|
| Frontend | https://nom-de-domaine.fr |
| API | https://api.nom-de-domaine.fr |
| Documentation | https://doc.nom-de-domaine.fr |
Pour vérifier les certificats TLS et l'état de Traefik :
docker compose --profile traefik logs traefik