maxime.killinger a57c520610
🚀 Docker Build and Push / build-and-push (15) (push) Successful in 2m58s
🚀 Docker Build and Push / build-and-push (16) (push) Successful in 3m39s
🚀 Docker Build and Push / build-and-push (17) (push) Successful in 3m37s
🚀 Docker Build and Push / build-and-push (18) (push) Successful in 3m36s
TimescaleDB 2.30.2 pour PostgreSQL 16 à 18, 2.28.3 gardé pour PostgreSQL 15
- 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.
2026-10-02 18:02:35 +02:00

postgres-ts-vectors

Image Docker de PostgreSQL avec TimescaleDB, VectorChord, pgvector et PostGIS déjà installés.

CI PostgreSQL 15, 16, 17 et 18 TimescaleDB 2.30.2 VectorChord 1.1.1 pgvector 0.8 PostGIS 3 Docker, une image par version de PostgreSQL

Présentation

Une image par version majeure de PostgreSQL, prête à servir des séries temporelles, de la recherche vectorielle et des données géographiques dans la même base :

Les extensions sont créées au premier démarrage, dans la base du conteneur. L'image part de celle de VectorChord, mise à niveau à la construction : docs/architecture.md.

Images

Publiées sous gitea.killinger.fr/maxime.killinger/postgres-ts-vectors.

Étiquette PostgreSQL TimescaleDB VectorChord pgvector PostGIS
pg15 15 2.28.3 1.1.1 0.8 3
pg16 16 2.30.2 1.1.1 0.8 3
pg17, latest 17 2.30.2 1.1.1 0.8 3
pg18 18 2.30.2 1.1.1 0.8 3

TimescaleDB et VectorChord sont épinglés ; pg15 garde la dernière version de TimescaleDB qui gère PostgreSQL 15 (0007). PostgreSQL, pgvector et PostGIS suivent leurs versions mineures : les images sont reconstruites dès qu'apt en propose (Mises à jour). Les versions exactes se lisent dans un conteneur :

docker exec ma-base psql -U postgres -Atc "select version()" \
  -c "select extname, extversion from pg_extension"

Démarrage rapide

docker run -d \
  --name ma-base \
  -e POSTGRES_PASSWORD=motdepasse \
  -v donnees_pg:/var/lib/postgresql \
  -p 5432:5432 \
  gitea.killinger.fr/maxime.killinger/postgres-ts-vectors:pg18

Le point de montage du volume dépend de la version de PostgreSQL :

Étiquette Monter le volume sur
pg15, pg16, pg17, latest /var/lib/postgresql/data
pg18 /var/lib/postgresql

Sur l'autre chemin, les données d'une image jusqu'à PostgreSQL 17 partent dans un volume anonyme, perdu quand le conteneur est recréé, et l'image pg18 refuse de démarrer.

Configuration

Variable Rôle Défaut
POSTGRES_PASSWORD Mot de passe, obligatoire aucun
POSTGRES_USER Utilisateur postgres
POSTGRES_DB Base, où les extensions sont créées le nom de l'utilisateur

Ce sont les variables de l'image officielle postgres. Une commande qui remplace celle de l'image doit garder -c shared_preload_libraries=timescaledb,vchord, sans quoi TimescaleDB et VectorChord ne sont pas chargés.

Utilisation

-- Série temporelle
CREATE TABLE mesures (time TIMESTAMPTZ NOT NULL, capteur INTEGER, temperature DOUBLE PRECISION);
SELECT create_hypertable('mesures', 'time');

-- Recherche vectorielle
CREATE TABLE documents (id SERIAL PRIMARY KEY, contenu TEXT, embedding vector(1536));
CREATE INDEX ON documents USING vchordrq (embedding vector_l2_ops);
SELECT * FROM documents ORDER BY embedding <-> '[0.1, 0.2, ...]' LIMIT 10;

-- Géographie
CREATE TABLE lieux (id SERIAL PRIMARY KEY, geom geometry(Point, 4326));
SELECT ST_Distance(a.geom, b.geom) FROM lieux a, lieux b WHERE a.id = 1 AND b.id = 2;

Mises à jour

Chaque nuit, la CI teste les images publiées et reconstruit celles pour lesquelles apt propose des mises à jour : versions mineures de PostgreSQL, pgvector, PostGIS, correctifs Debian. Une version de TimescaleDB ou de VectorChord se change à la main, car une base existante doit alors être mise à niveau : docs/exploitation/publication.md.

Tests

docker build --build-arg PG_VERSION=18 -t postgres-ts-vectors:pg18 .
./tests.sh postgres-ts-vectors:pg18

tests.sh démarre l'image, vérifie les extensions, les exerce, redémarre le serveur et, avec une seconde image en argument, reprend une base créée par celle-ci. La CI lance la même commande avant de publier. Détail dans CLAUDE.md.

Documentation

Licences

Le dépôt est sous licence Apache 2.0. Les extensions gardent la leur : TimescaleDB, VectorChord, pgvector, PostGIS (GPL v2 ou ultérieure).

Image réalisée par Maxime Killinger.

S
Description
No description provided
Readme
104 KiB
0 Stars 1 Watchers 0 Forks
Languages
Shell 51.5%
Dockerfile 48.5%