Déploiement

Mise en production

Déploiement de TrickSpin sur un VPS OVH avec Docker et Traefik.

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

ServiceProfilAccès
front-prodprodhttps://nom-de-domaine.fr via Traefik
back-prodprodhttps://api.nom-de-domaine.fr via Traefik
doc-prodprodhttps://doc.nom-de-domaine.fr via Traefik
database-prodprodRéseau interne uniquement
traefiktraefikPorts 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) :

TypeNomValeur
A@IP du VPS
AapiIP du VPS
AdocIP du VPS
La propagation DNS peut prendre jusqu'à 24h.

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

VariableDescriptionExemple
MYSQL_ROOT_PASSWORDMot de passe root MySQLun-mot-de-passe-fort
MYSQL_DATABASENom de la base de donnéestrickspin
MYSQL_USERUtilisateur MySQL applicatiftrickspin_user
MYSQL_PASSWORDMot de passe de cet utilisateurun-autre-mot-de-passe

Variables production

VariableDescriptionExemple
DOMAINNom de domaine principaltrickspin.fr
ACME_EMAILEmail pour les certificats Let's Encryptcontact@trickspin.fr
API_BASEURL publique de l'API (utilisée par le front)https://api.trickspin.fr
Ne jamais committer le fichier .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

CommandeDescription
make prodDémarrer les conteneurs prod
make prod-buildRebuild et démarrer
make prod-downArrêter les conteneurs prod
docker compose --profile prod logs -fSuivre tous les logs
docker compose --profile prod logs -f back-prodLogs 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

ServiceURL
Frontendhttps://nom-de-domaine.fr
APIhttps://api.nom-de-domaine.fr
Documentationhttps://doc.nom-de-domaine.fr

Pour vérifier les certificats TLS et l'état de Traefik :

docker compose --profile traefik logs traefik