Service `db` du docker-compose racine sur timescale/timescaledb-ha:pg17, volume nomme et cibles Makefile db-up / db-down / db-reset / db-logs / db-psql. - db/init/100-extensions.sql declare l'extension attendue, db/init/110 cree la base enervision_test utilisee par la suite de tests du backend. - Numerotation a partir de 100 : l'image depose ses propres scripts 000, 001 et 010, et un prefixe a deux chiffres se trie avant 010 en locale C. - Volume monte sur /home/postgres/pgdata/data, PGDATA de cette image. Monte au chemin habituel de l'image postgres, il ne retiendrait rien sans erreur. - Port publie 5433 par defaut, 5432 etant souvent deja pris sur un poste.
Base de donnees
PostgreSQL 17 avec l'extension TimescaleDB, servie en local par le service db du
docker-compose.yml racine (image timescale/timescaledb-ha:pg17).
init: scripts de bootstrap joues au premier demarrage du conteneur.migrations: migrations SQL versionnees.seeds: jeux de donnees de reference.
Les migrations du schema applicatif expose par l'API vivent dans
apps/backend/alembic, pas ici.
init ne rejoue jamais
Le dossier est monte sur /docker-entrypoint-initdb.d, dont PostgreSQL ne joue le
contenu qu'a la toute premiere initialisation, quand PGDATA est vide. Modifier ou
ajouter un script ensuite reste sans effet sur une base existante :
docker compose down -v && docker compose up -d db
L'image joue d'abord ses propres scripts (000_, 001_, 010_), dont un
CREATE EXTENSION IF NOT EXISTS timescaledb_toolkit CASCADE qui installe timescaledb
au passage dans postgres, template1 et la base applicative. Nos fichiers sont
numerotes a partir de 100 pour passer apres, quelle que soit la locale de tri.
| Script | Role |
|---|---|
100-extensions.sql |
Declare explicitement les extensions attendues. |
110-test-database.sql |
Cree enervision_test, attendue par la suite de tests du backend. |
Comme un bootstrap peut toujours avoir ete saute, c'est /api/v1/health/ready qui fait
foi : la sonde refuse de repondre 200 si l'extension n'est pas chargee.