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>
122 lines
3.5 KiB
YAML
122 lines
3.5 KiB
YAML
services:
|
|
db:
|
|
image: mariadb:11.4
|
|
container_name: pta-db
|
|
restart: unless-stopped
|
|
environment:
|
|
MARIADB_DATABASE: ${DB_NAME:-pta}
|
|
MARIADB_USER: ${DB_USER:-pta}
|
|
MARIADB_PASSWORD: ${DB_PASSWORD:-pta}
|
|
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-pta}
|
|
TZ: ${TZ:-Europe/Paris}
|
|
command:
|
|
- --character-set-server=utf8mb4
|
|
- --collation-server=utf8mb4_unicode_ci
|
|
volumes:
|
|
- mariadb_data:/var/lib/mysql
|
|
# Ce fichier n'est exécuté QUE lors de l'initialisation d'un volume vide.
|
|
- ./database/pta_prod_schema_mariadb.sql:/docker-entrypoint-initdb.d/01-pta-schema.sql:ro
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "mariadb-admin ping -h 127.0.0.1 -uroot -p\"$${MARIADB_ROOT_PASSWORD}\" --silent"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 10
|
|
start_period: 20s
|
|
networks:
|
|
- pta
|
|
|
|
# Service jetable : applique les migrations SQL puis s'arrête. Le service php
|
|
# ne démarre qu'après sa sortie en succès, si bien qu'une migration en échec
|
|
# empêche l'application de tourner sur une base incomplète.
|
|
db-migrate:
|
|
image: mariadb:11.4
|
|
container_name: pta-db-migrate
|
|
restart: "no"
|
|
environment:
|
|
DB_HOST: db
|
|
DB_PORT: 3306
|
|
DB_NAME: ${DB_NAME:-pta}
|
|
# Les migrations créent tables et vues : elles passent par le compte
|
|
# d'administration, jamais par le compte applicatif.
|
|
DB_USER: root
|
|
DB_PASSWORD: ${DB_ROOT_PASSWORD:-pta}
|
|
TZ: ${TZ:-Europe/Paris}
|
|
volumes:
|
|
- ./database:/migrations:ro
|
|
- ./docker/db/apply-migrations.sh:/usr/local/bin/apply-migrations.sh:ro
|
|
entrypoint: ["/bin/sh", "/usr/local/bin/apply-migrations.sh"]
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
networks:
|
|
- pta
|
|
|
|
php:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
target: php
|
|
container_name: pta-php
|
|
restart: unless-stopped
|
|
environment:
|
|
PTA_DB_HOST: db
|
|
PTA_DB_PORT: 3306
|
|
PTA_DB_NAME: ${DB_NAME:-pta}
|
|
PTA_DB_USER: ${DB_USER:-pta}
|
|
PTA_DB_PASS: ${DB_PASSWORD:-change_me}
|
|
# Aucun détail technique n'est renvoyé au navigateur tant que ce drapeau
|
|
# n'est pas explicitement passé à 1. Ne jamais l'activer en production.
|
|
PTA_DEBUG: ${PTA_DEBUG:-0}
|
|
TZ: ${TZ:-Europe/Paris}
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
db-migrate:
|
|
condition: service_completed_successfully
|
|
networks:
|
|
- pta
|
|
|
|
nginx:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
target: nginx
|
|
container_name: pta-nginx
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${APP_BIND:-0.0.0.0}:${APP_PORT:-8080}:80"
|
|
depends_on:
|
|
- php
|
|
networks:
|
|
- pta
|
|
|
|
phpmyadmin:
|
|
image: phpmyadmin:5.2.2
|
|
container_name: pta-phpmyadmin
|
|
restart: unless-stopped
|
|
environment:
|
|
PMA_HOST: db
|
|
PMA_PORT: 3306
|
|
# PMA_USER / PMA_PASSWORD sont volontairement absents : leur présence fait
|
|
# basculer phpMyAdmin en auth_type=config, c'est-à-dire une session déjà
|
|
# authentifiée pour quiconque atteint le port. Sans eux, phpMyAdmin exige
|
|
# un identifiant et un mot de passe MariaDB à chaque connexion.
|
|
UPLOAD_LIMIT: 64M
|
|
TZ: ${TZ:-Europe/Paris}
|
|
ports:
|
|
# phpMyAdmin n'écoute que sur la boucle locale. Pour y accéder à distance,
|
|
# passer par un tunnel SSH (voir README_DOCKER.md).
|
|
- "${PMA_BIND:-0.0.0.0}:${PMA_PORT:-8081}:80"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
networks:
|
|
- pta
|
|
|
|
networks:
|
|
pta:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
mariadb_data:
|