- TIMESCALEDB_VERSION passe de 2.28.3 à 2.30.2. Vérifié pour 16, 17 et 18 :
compilation, tests, et reprise d'une base créée par l'image publiée après
`ALTER EXTENSION timescaledb UPDATE`.
- TimescaleDB 2.29 a retiré PostgreSQL 15 (`Unsupported PostgreSQL version` à la
compilation) : `pg15` garde 2.28.3 par TIMESCALEDB_VERSION_PG15.
- Décision 0007, tableau et badge du README, procédure de changement de version.
Une base existante refuse toute requête sur la nouvelle image tant que
l'extension n'est pas mise à niveau : voir docs/exploitation/publication.md.
Image
- Étape `base` commune : tous les paquets sont mis à niveau (PostgreSQL à la
dernière mineure, pgvector, Debian). L'image de base de VectorChord restait
figée à la version de sa publication.
- En-têtes du serveur épinglés sur la version du serveur installé. PG18 avait
été retiré parce que TimescaleDB, compilé avec des en-têtes 18.6, était chargé
par un serveur 18.3 (`undefined symbol: palloc0_mul`).
- Sonde de santé avec l'utilisateur et la base du conteneur : en `postgres`,
elle écrivait une erreur FATAL au journal dès que POSTGRES_USER était défini.
- Label `base.name` corrigé : il reprenait la version du paquet au lieu de la
version majeure.
CI
- PG18 ajouté à la matrice.
- Exécution nocturne : apt est interrogé dans l'image publiée ; elle n'est
reconstruite et republiée que s'il lui reste des mises à jour, sinon elle est
seulement testée. Lancement manuel possible.
- `docker-build.yml` supprimé : l'ancien workflow à actions externes tournait
encore à chaque push, en double de `docker.yml`.
- `paths-ignore` : un push de documentation seule ne lance pas la CI.
- Labels `version`, `url` et `fr.killinger.apt-refresh`.
Tests
- `tests.sh`, la même commande en local et en CI : utilisateur et base autres
que `postgres`, version majeure du serveur, présence des cinq extensions,
redémarrage, et reprise d'une base créée par l'image publiée.
Documentation
- README en vitrine, CLAUDE.md, docs/architecture.md,
docs/exploitation/publication.md, six décisions, docs/a-faire.md.
- Install PostGIS (postgresql--postgis-3) in the final image.
- Add postgis and postgis_topology to init-extensions.sh.
- Add test script for PostGIS to the CI workflow.
- Update README.md to reflect PostGIS integration.
- Remove PG18 from CI matrix because of ABI incompatibility between TimescaleDB headers and the vchord-postgres PG18 runtime (missing palloc0_mul). PG18 support will be restored when VectorChord releases a stable PG18 image.
PostgreSQL 18+ Docker images changed the data directory structure to use
versioned subdirectories (e.g., /var/lib/postgresql/18/main) instead of
the traditional /var/lib/postgresql/data path.
Changes:
- Dockerfile: Add mkdir and chown to ensure /var/lib/postgresql has
correct permissions for the postgres user before volume mount
- README.md: Update Quick Start with volume mount example
- README.md: Add 'Data Persistence' section explaining PG18+ requirements
This fixes the 'mkdir: cannot create directory: Permission denied' error
that occurred when mounting volumes at /var/lib/postgresql.
See: https://github.com/docker-library/postgres/pull/1259
- Multi-stage Dockerfile for optimized image size (676MB vs 2GB)
- Support for PostgreSQL 15, 16, 17, 18
- TimescaleDB 2.24.0, VectorChord 1.0.0, pgvector 0.8.1
- Auto-creation of extensions on first startup
- CI/CD with tests for all versions
- OCI labels and healthcheck included