| From: | pglayers via PostgreSQL Announce <announce-noreply(at)postgresql(dot)org> |
|---|---|
| To: | PostgreSQL Announce <pgsql-announce(at)lists(dot)postgresql(dot)org> |
| Subject: | pglayers: PostgreSQL extensions as stackable Docker layers |
| Date: | 2026-07-08 20:40:51 |
| Message-ID: | 178354325130.73866.15171162984104212031@wrigleys.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-announce |
# 🚀 Announcing **pglayers**
**Pre‑built PostgreSQL extensions as composable Docker image layers**
**Project:** [https://github.com/pglayers/pglayers](https://github.com/pglayers/pglayers)
---
## 📌 What It Does
**pglayers** publishes **53 PostgreSQL extensions** as **minimal Docker images** (`FROM scratch`).
Each image contains only:
- Shared libraries
- Control files
- SQL scripts
- Correct filesystem paths
You compose them onto the official `postgres` Docker image using `COPY --from`:
```dockerfile
FROM postgres:17
COPY --from=ghcr.io/pglayers/pgx-pgvector:17 / /
COPY --from=ghcr.io/pglayers/pgx-postgis:17 / /
COPY --from=ghcr.io/pglayers/pgx-pg_cron:17 / /
```
No compilation.
No `apt-get`.
No build tools in the final image.
Just `CREATE EXTENSION` as usual.
---
## 🟢 Ready-to-Use Images
For a fully preconfigured setup:
```bash
docker run -d -e POSTGRES_PASSWORD=s ghcr.io/pglayers/pglayers-full:17
```
Includes:
- All **53 extensions**
- `shared_preload_libraries` already set
Also available:
- **Azure profile** (28 extensions) matching *Azure Database for PostgreSQL Flexible Server*
Useful for local dev/test against managed services.
---
## 📦 Extensions Included
53 extensions across major categories:
- **AI/ML:** pgvector
- **Geospatial:** PostGIS, pgRouting, h3-pg
- **Time-series:** TimescaleDB
- **Analytics:** pg_duckdb
- **Observability:** pgaudit, pg_stat_monitor, pg_qualstats, pg_wait_sampling
- **Scheduling:** pg_cron
- **Partitioning:** pg_partman
- **Replication:** pglogical, pg_failover_slots, wal2json
- **Full text search:** pg_textsearch, pg_bigm, rum
- **And 36 more**
**Full list:** [https://github.com/pglayers/pglayers#available-extensions](https://github.com/pglayers/pglayers#available-extensions)
---
## 🐘 Supported PostgreSQL Versions
- **PostgreSQL 17** (stable)
- **PostgreSQL 18** (stable)
- **PostgreSQL 19** (experimental, beta)
All images support **linux/amd64** and **linux/arm64**.
---
## 🧱 PG 18+ Isolated Layout
PostgreSQL 18 introduces `extension_control_path` and `dynamic_library_path`.
pglayers uses these to place each extension in its own namespace:
```
/extensions/<name>/
```
Benefits:
- No file collisions
- Multiple versions of the same library can coexist
- Extensions can be mounted at deploy time (no rebuild)
Example:
```dockerfile
COPY --from=ghcr.io/pglayers/pgx-pgvector:18 / /extensions/pgvector/
COPY --from=ghcr.io/pglayers/pgx-pg_cron:18 / /extensions/pg_cron/
```
PostgreSQL locates them via:
```
extension_control_path = '/extensions/pgvector/share:/extensions/pg_cron/share:$system'
dynamic_library_path = '/extensions/pgvector/lib:/extensions/pg_cron/lib:$libdir'
```
Fully compatible with **CloudNativePG ≥ 1.27**, which auto‑manages these GUCs.
---
## 🧪 Testing
The test suite validates:
- No file collisions between layers
- No overwrites of base image files
- All shared library dependencies resolve (`ldd`)
- `CREATE EXTENSION` succeeds for every extension
- Functional smoke tests + integration tests
---
## 📄 Licensing
Only permissive open-source licenses:
- PostgreSQL
- MIT
- BSD
- Apache 2.0
- ISC
- MPL‑2.0
**PostGIS** and **pgRouting** (GPL‑2.0) included under the standard *mere aggregation* interpretation used in the PostgreSQL ecosystem.
No BSL, SSPL, or proprietary-dependency extensions.
---
## 🤝 Contributing
Contributions welcome!
Adding a new extension requires:
- `Dockerfile`
- `extension.conf`
- `test.sql`
See **CONTRIBUTING.md** for details.
Feedback, bug reports, and extension requests via **GitHub Issues**.
---
## 🙏 Acknowledgements
This project stands on the shoulders of the PostgreSQL community:
- PostgreSQL Global Development Group
- PGDG APT Repository maintainers
- Official PostgreSQL Docker image maintainers
- Debian PostgreSQL team
- Every extension author who publishes under permissive licenses
*pglayers is a thin layer of automation on top of their work. Without the quality and consistency of the upstream ecosystem, this project would not exist.*
**Thanks!
Ismael Mejia**
| From | Date | Subject | |
|---|---|---|---|
| Next Message | EDB via PostgreSQL Announce | 2026-07-08 20:58:53 | Barman 3.19.0 and 3.19.1 Released |
| Previous Message | PDU PostgreSQL Data Unloader via PostgreSQL Announce | 2026-07-08 07:03:14 | PDU: an open source PostgreSQL Data Unloader for full-database offline export and targeted WAL recovery |