Sign inSign up

georgelpreput/postgres-aio

By georgelpreput

•Updated about 1 month ago

PostgreSQL 18 + pgEdge + VectorChord + Apache AGE + PostGIS + extras

Image
0

2.6K

georgelpreput/postgres-aio repository overview

⁠postgres-aio

PostgreSQL 18 container image based on the pgEdge Enterprise Postgres image⁠, extended with VectorChord, Apache AGE, pg_graphql, and several common extensions, published as a single multi-arch (amd64 + arm64) tag.

⁠What's inside

Layered on top of ghcr.io/pgedge/pgedge-postgres:18-spock5-standard (Rocky 9 UBI, PostgreSQL 18.3, Spock 5.0.6):

ExtensionPurposeOrigin
spockLogical replication / multi-activepreinstalled
vector (pgvector)Vector type + base similarity opspreinstalled
vchordVectorChord — vector index AM (vchordrq)added (this image)
vchord_bm25BM25 ranking from VectorChord suitepreinstalled
postgisSpatial types and operatorspreinstalled
ageApache AGE — Cypher / openCypher graph queriesadded (this image)
pg_graphqlGraphQL API directly from PostgreSQLadded (this image)
pg_cronIn-database cron schedulerpreinstalled
pg_stat_statementsQuery performance statspreinstalled
pg_trgmTrigram fuzzy text searchpreinstalled
pgauditSession and object audit loggingpreinstalled

⁠Tags

  • :vXX.Y-N — pinned multi-arch manifest
  • :vXX.Y-N-amd64 / :vXX.Y-N-arm64 — per-arch fragments
  • :latest — latest build

Published in parallel to:

  • Docker Hub: georgelpreput/postgres-aio
  • GitLab Container Registry: registry.gitlab.com/<group>/postgres-aio

⁠Usage

docker run -d \
    -e POSTGRES_PASSWORD=secret \
    -e POSTGRES_USER=app \
    -e POSTGRES_DB=app \
    -p 5432:5432 \
    -v pgdata:/var/lib/pgsql/18/data \
    georgelpreput/postgres-aio:latest

The container reuses the upstream postgres entrypoint, so the standard POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB / POSTGRES_INITDB_ARGS env vars and /docker-entrypoint-initdb.d/ mount point all work as expected.

⁠Notes

  • shared_preload_libraries is set to pgaudit,pg_cron,pg_stat_statements,spock,vchord,age and track_commit_timestamp=on (required by Spock's default conflict resolution).
  • pg_cron metadata lives in the postgres database (the default for cron.database_name). To schedule jobs that run in another database, use cron.schedule_in_database(name, schedule, sql, db).
  • Apache AGE requires per-session setup before Cypher queries:
    LOAD 'age';
    SET search_path = ag_catalog, "$user", public;
    

⁠Build

Native per-arch builds (amd64/arm64). Versions are pinned in versions.env.

make build         # builds for the host's native arch
make smoke         # smoke-tests the just-built image

# After `docker login docker.io` and `docker login registry.gitlab.com`:
make push          # pushes <version>-<arch> to both registries
make manifest      # combines into multi-arch <version> + latest tags

CI (.gitlab-ci.yml) builds both arches on native runners (tags amd64 / arm64), runs smoke tests, then publishes the manifest. Renovate (renovate.json) bumps the version pins on stable upstream releases.

Tag summary

Content type

Image

Digest

sha256:e019b134a…

Size

513.7 MB

Last updated

about 1 month ago

docker pull georgelpreput/postgres-aio