Provisionner le rôle applicatif à chaque docker compose up

Le rôle planflow_app n etait créé qu à la première initialisation du volume :
une base existante au rôle absent (ou au mot de passe changé) bloquait l app
en échec P1000 sans remède automatique.

Ajouter un service db-init, idempotent, qui rejoue docker/init-app-role.sh à
chaque up — branche ELSE re-synchronisant le mot de passe — avant que l app
ne démarre.
This commit is contained in:
Michael committed 2026-08-09 14:22:05 +02:00
1 parent f4e3608d72
commit 2c3c67b949
3 files changed
+44 -4

No files matched your search

+26
View File
@@ -41,6 +41,30 @@ services:
ports:
- '${POSTGRES_PORT:-55432}:5432'
# Provisionne le rôle applicatif à chaude occurrence de `up`, pas seulement à
# la première initialisation du volume : inversement, une base existante dont
# le rôle est absent (ou dont le mot de passe a changé) laisserait l'app en
# échec d'authentification P1000 sans recours autre que du SQL à la main.
# Idempotent : rejouable autant de fois que nécessaire.
db-init:
image: postgres:16-alpine
restart: 'no'
depends_on:
db:
condition: service_healthy
environment:
POSTGRES_USER: ${POSTGRES_USER:-planflow}
PGPASSWORD: ${POSTGRES_PASSWORD:-planflow-interne}
POSTGRES_DB: ${POSTGRES_DB:-planflow}
APP_DB_USER: ${APP_DB_USER:-planflow_app}
APP_DB_PASSWORD: ${APP_DB_PASSWORD:-planflow-app-interne}
PGHOST: db
volumes:
- ./docker/init-app-role.sh:/docker-entrypoint-initdb.d/10-init-app-role.sh:ro
command: ['sh', '/docker-entrypoint-initdb.d/10-init-app-role.sh']
networks:
- interne
app:
build:
context: .
@@ -48,6 +72,8 @@ services:
depends_on:
db:
condition: service_healthy
db-init:
condition: service_completed_successfully
environment:
NODE_ENV: production
# Le compte applicatif, **pas** le superutilisateur d'amorçage : un