Guide d'installation locale
Ce guide explique comment configurer NENE2 localement, depuis un clone vierge jusqu'à une API fonctionnelle.
Prérequis
- Docker Desktop (ou Docker Engine + plugin Compose)
- Git
Aucune installation de PHP, Node.js ou MySQL sur l'hôte n'est requise. Toutes les dépendances d'exécution fonctionnent dans Docker.
1. Cloner et configurer
bash
git clone https://github.com/hideyukiMORI/NENE2.git
cd NENE2
cp .env.example .envOuvrez .env et ajustez les valeurs si nécessaire. Les valeurs par défaut fonctionnent pour le développement local sans modifications.
Variables d'environnement principales :
| Variable | Défaut | Utilité |
|---|---|---|
APP_ENV | local | Environnement d'exécution |
NENE2_MACHINE_API_KEY | (vide) | Laisser vide pour désactiver l'auth machine-client en développement local |
DB_ADAPTER | mysql | sqlite ou mysql |
DB_HOST | mysql | Correspond au nom du service Docker Compose |
2. Construire et installer
bash
docker compose build
docker compose run --rm app composer install3. Lancer les vérifications backend
bash
docker compose run --rm app composer checkCette commande exécute PHPUnit, PHPStan, PHP-CS-Fixer, la validation OpenAPI et la validation du catalogue MCP en séquence. Tout doit passer sur un clone propre.
4. Démarrer le serveur web
bash
docker compose up -d appVérifier qu'il fonctionne :
bash
curl -i http://localhost:8080/healthRéponse attendue :
json
{"status":"ok","service":"NENE2"}Autres endpoints locaux utiles :
| URL | Description |
|---|---|
http://localhost:8080/ | Informations sur le framework |
http://localhost:8080/health | Vérification de santé |
http://localhost:8080/examples/ping | Exemple ping |
http://localhost:8080/examples/notes/{id} | Note par ID (nécessite une DB) |
http://localhost:8080/openapi.php | JSON OpenAPI brut |
http://localhost:8080/docs/ | Interface Swagger |
5. Arrêter le serveur
bash
docker compose downOptionnel : Configuration de la base de données MySQL
La suite de tests par défaut utilise SQLite en mémoire. Pour vérifier l'adaptateur MySQL ou exécuter des tests de fumée sur les opérations d'écriture :
bash
docker compose up -d mysql
docker compose run --rm app composer migrations:migrate
docker compose run --rm app composer test:database:mysqlOptionnel : Authentification machine-client
L'endpoint /machine/health nécessite une clé API. Pour le tester localement :
- Définir
NENE2_MACHINE_API_KEY=local-dev-keydans.env. - Redémarrer le service app :
docker compose up -d app - Appeler l'endpoint protégé :
bash
curl -i -H 'X-NENE2-API-Key: local-dev-key' http://localhost:8080/machine/healthOptionnel : Configuration du frontend
bash
npm install --prefix frontend
npm run dev --prefix frontendOptionnel : Serveur MCP local
bash
docker compose run --rm -e NENE2_LOCAL_API_BASE_URL=http://app app php tools/local-mcp-server.phpOptionnel : Vérifier le Request ID dans les logs
Chaque requête génère un X-Request-Id retourné dans l'en-tête de réponse et attaché à chaque enregistrement Monolog.
- Démarrer l'app :
docker compose up -d app - Envoyer une requête :bash
curl -i http://localhost:8080/health # Chercher X-Request-Id dans les en-têtes de réponse - Observer la sortie de log structurée :bash
docker compose logs app # Chaque ligne JSON inclut "extra":{"request_id":"<id>"}
Vous pouvez aussi fournir votre propre ID :
bash
curl -i -H 'X-Request-Id: my-trace-id' http://localhost:8080/healthDépannage
composer check échoue sur un clone propre Exécutez d'abord docker compose run --rm app composer install. Le répertoire vendor/ n'est pas versionné.
Le port 8080 est déjà utilisé Arrêtez ce qui l'utilise, ou changez la correspondance de port dans compose.yaml :
yaml
ports:
- "8081:80" # utiliser 8081 à la placeConnexion MySQL refusée pendant les migrations Le conteneur mysql prend quelques secondes pour être prêt. Attendez un moment et réessayez.