🚀 Docker Build and Push / build-and-push (15) (push) Successful in 5m29s
🚀 Docker Build and Push / build-and-push (16) (push) Successful in 6m10s
🚀 Docker Build and Push / build-and-push (17) (push) Successful in 5m20s
🚀 Docker Build and Push / build-and-push (18) (push) Successful in 5m21s
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.
33 lines
1.4 KiB
Markdown
33 lines
1.4 KiB
Markdown
# 0001 — Image de VectorChord en base, TimescaleDB compilé, PostGIS par apt
|
|
|
|
## Contexte
|
|
|
|
L'image doit réunir PostgreSQL, TimescaleDB, VectorChord, pgvector et PostGIS, pour plusieurs
|
|
versions majeures de PostgreSQL. TensorChord publie `tensorchord/vchord-postgres`, qui
|
|
contient déjà PostgreSQL, VectorChord et pgvector, construite sur l'image officielle
|
|
`postgres` (Debian 12, dépôt de paquets PGDG).
|
|
|
|
## Décision
|
|
|
|
- L'image part de `tensorchord/vchord-postgres:pgN-vX.Y.Z`.
|
|
- TimescaleDB est compilé depuis l'étiquette Git de sa version, dans une étape séparée. Seuls
|
|
ses bibliothèques et ses scripts SQL passent dans l'image finale.
|
|
- PostGIS est installé par le paquet `postgresql-N-postgis-3` du dépôt PGDG.
|
|
- Les extensions sont créées à l'initialisation de la base par un script de
|
|
`/docker-entrypoint-initdb.d/`, et la commande de l'image précharge `timescaledb` et
|
|
`vchord`.
|
|
|
|
## Conséquences
|
|
|
|
- Le même Dockerfile sert toutes les versions de PostgreSQL pour lesquelles TensorChord
|
|
publie une image.
|
|
- Une construction sans cache compile TimescaleDB, ce qui prend plusieurs minutes par
|
|
version.
|
|
- Les outils de compilation ne sont pas dans l'image publiée.
|
|
- Variables d'environnement, point d'entrée et emplacement des données sont ceux de l'image
|
|
officielle `postgres`.
|
|
|
|
## Attestée par
|
|
|
|
`Dockerfile` ; `init-extensions.sh` ; `tests/test-*.sql`.
|