Installation¶
Ce document décrit la mise en place d'un environnement BCard fonctionnel, en local ou avec Docker. Pour le détail des variables d'environnement, voir Configuration.
Prérequis¶
- PHP ≥ 8.2 avec les extensions
ctypeeticonv(requises explicitement parcomposer.json) ainsi queintl,sodium,pdo_mysql,gdetzip(installées par l'image Docker et nécessaires aux bundles utilisés : Doctrine, dompdf, endroid/qr-code). - Composer 2.
- Docker et Docker Compose, pour l'exécution conteneurisée.
- MySQL 8 (ou MariaDB compatible), si l'on n'utilise pas le conteneur
dbfourni. - OpenSSL, pour la génération des clés JWT.
Récupérer le projet¶
Le fichier .env versionné contient des valeurs par défaut de développement ; .env.local
(non versionné) sert aux surcharges propres à votre poste. Voir
Configuration pour le rôle de chaque variable.
Démarrer avec Docker¶
Ceci démarre deux services définis dans docker-compose.yaml :
| Service | Rôle | Accès |
|---|---|---|
card |
Application Symfony (image registry-binn.binn.pro/bcard:latest) |
http://localhost:9090 |
db |
MySQL | Interne au réseau Docker (db:3306) |
Ce registre (registry-binn.binn.pro) est distinct de celui utilisé par la chaîne d'intégration
continue (binn.registry.169.58.138.150.nip.io, voir Déploiement) :
la pile locale ne tire donc pas l'image publiée par la CI. Les deux registres coexistent
aujourd'hui sans que le dépôt explique ce partage ; à défaut de savoir lequel fait foi, ne
supposez pas que l'une des deux images reflète l'autre.
Un fichier compose.override.yaml est présent dans le dépôt mais déclare des services
database et mailer qui ne correspondent à aucun service de docker-compose.yaml (card,
db) : Docker Compose ne le charge automatiquement que s'il porte le nom
docker-compose.override.yaml, ce qui n'est pas le cas ici. En l'état, il n'est donc pas
appliqué par un simple docker compose up, et Mailpit n'est pas démarré par cette commande.
Le portail de documentation dispose de son propre profil Docker, décrit dans Générer la documentation.
Installer les dépendances PHP¶
Pour un développement hors conteneur :
Base de données¶
Créer la base puis y appliquer le schéma :
Migrations¶
Jeux de données de développement¶
Purge de la base
Le chargement des fixtures purge la base avant de la repeupler. Le bundle
doctrine/doctrine-fixtures-bundle n'est d'ailleurs déclaré qu'en dépendance de
développement (require-dev de composer.json) : ne l'exécutez jamais en production.
Clés JWT¶
L'authentification de l'API REST repose sur LexikJWTAuthenticationBundle. Générer la paire de clés :
Par défaut (config/packages/lexik_jwt_authentication.yaml), les clés sont attendues à :
config/jwt/private.pem— clé privée, sert à signer les jetons.config/jwt/public.pem— clé publique, sert à les vérifier.
Ces chemins sont paramétrés par les variables JWT_SECRET_KEY et JWT_PUBLIC_KEY ; la clé
privée est elle-même protégée par la passphrase JWT_PASSPHRASE. Détails dans
Configuration.
Premier compte administrateur¶
Aucun compte ROLE_ADMIN n'existe dans une base neuve. La commande console
app:create-admin-user en crée un :
email et password sont des arguments obligatoires ; le nom complet est ensuite demandé de
façon interactive. Le compte créé est marqué vérifié et activé et reçoit directement le rôle
ROLE_ADMIN, ce qui permet de se connecter au back-office — et d'obtenir un jeton JWT via l'API,
qui refuse tout compte non activé — sans passer par le parcours d'inscription public.
Vérifier l'installation¶
- Ouvrir
http://localhost:9090(ou l'URL locale utilisée sans Docker) : la page d'accueil publique doit s'afficher. - Ouvrir
http://localhost:9090/api/docs: la documentation interactive de l'API REST (Swagger UI, servie par nelmio/api-doc-bundle) doit se charger.
Aller plus loin¶
- Configuration — détail de chaque variable d'environnement.
- Contribuer — conventions de branches, de commits et checklist de merge request.
- Déploiement — construction de l'image Docker et mise en production.