V7.10 — Tableau de bord, guide, semaine type et enveloppe de formation
Reprise dans le répertoire de production du travail mené dans le worktree ux-service-enfance : - tableau de bord Service Enfance (dashboard.php) et navigation regroupée ; - guide d'utilisation (faq.php) accessible depuis toute la navigation ; - éditeur de semaine type mis en avant sur l'écran de saisie ; - droit à l'enveloppe de formation par agent, en remplacement de la case « formation déjà prévue dans la répartition annuelle » ; - correctif de « [object Object] » sur les cartes de quota du PTA ; - motif de travail par défaut à la saisie, heures travaillées complètes dans les PDF. Le docker-compose.yml de production est conservé : celui du worktree décrit une pile de test (conteneurs et volume suffixés « test », ports 9080/9081), qui aurait fait redémarrer l'application sur un volume MariaDB vide. Les migrations database/migration_v7_9*.sql sont obligatoires ; le service db-migrate les applique au déploiement. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -9,7 +9,9 @@ Copier les fichiers de ce kit à la racine du projet PTA :
|
||||
- `.env.example`
|
||||
- `docker/nginx/default.conf`
|
||||
- `docker/php/php.ini`
|
||||
- `docker/db/apply-migrations.sh`
|
||||
- `database/pta_prod_schema_mariadb.sql`
|
||||
- `database/migration_*.sql`
|
||||
|
||||
Puis :
|
||||
|
||||
@@ -32,7 +34,12 @@ Application :
|
||||
http://IP_DU_SERVEUR:8080
|
||||
```
|
||||
|
||||
phpMyAdmin est volontairement publié sur `127.0.0.1:8081` par défaut.
|
||||
phpMyAdmin est volontairement publié sur `127.0.0.1:8081` par défaut et **exige
|
||||
un identifiant MariaDB** à chaque connexion. Ne pas définir `PMA_USER` /
|
||||
`PMA_PASSWORD` dans le compose : ces variables font basculer phpMyAdmin en
|
||||
`auth_type=config`, c'est-à-dire une session déjà ouverte pour quiconque
|
||||
atteint le port.
|
||||
|
||||
Sur le serveur lui-même :
|
||||
|
||||
```text
|
||||
@@ -58,8 +65,31 @@ lorsque le volume MariaDB est créé pour la première fois.
|
||||
|
||||
Il ne sera PAS rejoué à chaque démarrage du conteneur.
|
||||
|
||||
Si la base existe déjà, ne supprimez pas le volume pour appliquer une migration. Exécutez
|
||||
les migrations explicitement sur la base existante.
|
||||
### Migrations
|
||||
|
||||
Les fichiers `database/migration_*.sql` sont appliqués **automatiquement à chaque
|
||||
`docker compose up`**, par le service jetable `db-migrate` :
|
||||
|
||||
- il attend que MariaDB soit sain, puis joue les migrations dans l'ordre alphabétique ;
|
||||
- la table `schema_migration` mémorise les fichiers déjà appliqués — rien n'est rejoué
|
||||
inutilement ;
|
||||
- le service `php` ne démarre qu'après sa sortie en succès : une migration en échec arrête
|
||||
le déploiement au lieu de faire tourner l'application sur une base incomplète ;
|
||||
- il vérifie pour finir la présence des sept vues de contrôle d'accès de la V7.8.
|
||||
|
||||
Il n'est donc plus nécessaire de supprimer le volume ni d'exécuter les migrations à la main.
|
||||
|
||||
```bash
|
||||
# Compte rendu de la dernière application
|
||||
docker compose logs db-migrate
|
||||
|
||||
# Rejouer les migrations sans toucher au reste de la pile
|
||||
docker compose up -d --force-recreate db-migrate
|
||||
```
|
||||
|
||||
Toute nouvelle migration doit être écrite idempotente (`CREATE TABLE IF NOT EXISTS`,
|
||||
`INSERT ... ON DUPLICATE KEY UPDATE`, `CREATE OR REPLACE VIEW`) : un fichier dont le contenu
|
||||
change après coup est rejoué.
|
||||
|
||||
## Commandes utiles
|
||||
|
||||
@@ -73,6 +103,9 @@ docker compose logs -f nginx php db
|
||||
# Rebuild après modification du PHP / JS / CSS
|
||||
docker compose up -d --build php nginx
|
||||
|
||||
# Journal de l'application des migrations
|
||||
docker compose logs db-migrate
|
||||
|
||||
# Arrêt
|
||||
docker compose down
|
||||
|
||||
|
||||
Reference in New Issue
Block a user