Aller au contenu

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 ctype et iconv (requises explicitement par composer.json) ainsi que intl, sodium, pdo_mysql, gd et zip (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 db fourni.
  • OpenSSL, pour la génération des clés JWT.

Récupérer le projet

git clone <url-du-depot> bcard
cd bcard

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

docker compose up -d

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 :

composer install

Base de données

Créer la base puis y appliquer le schéma :

php bin/console doctrine:database:create

Migrations

php bin/console doctrine:migrations:migrate

Jeux de données de développement

php bin/console doctrine:fixtures:load

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 :

php bin/console lexik:jwt:generate-keypair

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 :

php bin/console app:create-admin-user <email> <password>

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.