发布日期:2026-07-08;发布方:pglayers
pglayers 发布了可组合的预构建 PostgreSQL 扩展 Docker 镜像层。项目地址:https://github.com/pglayers/pglayers
pglayers 将 53 个 PostgreSQL 扩展发布为最小化 Docker 镜像(FROM scratch)。每个镜像只包含共享库、control 文件、SQL 脚本和正确的文件系统路径。用户可以通过 COPY --from 把这些层组合到官方 postgres Docker 镜像上。
这意味着最终镜像不需要编译、不需要 apt-get,也不需要构建工具;像往常一样执行 CREATE EXTENSION 即可。
完整预配置镜像可通过 docker run -d -e POSTGRES_PASSWORD=s ghcr.io/pglayers/pglayers-full:17 启动,包含全部 53 个扩展,并已设置 shared_preload_libraries。项目还提供 Azure profile(28 个扩展),用于匹配 Azure Database for PostgreSQL Flexible Server,便于本地开发和测试托管服务兼容性。
这些扩展覆盖 AI/ML(pgvector)、地理空间(PostGIS、pgRouting、h3-pg)、时序(TimescaleDB)、分析(pg_duckdb)、可观测性(pgaudit、pg_stat_monitor、pg_qualstats、pg_wait_sampling)、调度(pg_cron)、分区(pg_partman)、复制(pglogical、pg_failover_slots、wal2json)、全文检索(pg_textsearch、pg_bigm、rum)等类别。
完整列表:https://github.com/pglayers/pglayers#available-extensions
支持 PostgreSQL 17(稳定)、PostgreSQL 18(稳定)和 PostgreSQL 19(实验性,beta),所有镜像都支持 linux/amd64 和 linux/arm64。
PostgreSQL 18 引入了 extension_control_path 和 dynamic_library_path。pglayers 利用这些能力把每个扩展放到自己的命名空间中,例如 /extensions/<name>/,从而避免文件冲突,允许同一库的多个版本共存,并支持在部署时挂载扩展而无需重建镜像。该方式兼容 CloudNativePG 1.27 及以上版本。
测试套件会验证层之间没有文件冲突、不会覆盖基础镜像文件、所有共享库依赖都能解析、每个扩展都能 CREATE EXTENSION,并包含功能烟测与集成测试。
项目只包含宽松开源许可证下的扩展,包括 PostgreSQL、MIT、BSD、Apache 2.0、ISC、MPL-2.0。PostGIS 和 pgRouting(GPL-2.0)按 PostgreSQL 生态中常见的“单纯聚合”解释纳入。
欢迎通过 GitHub Issues 提交反馈、问题报告和扩展请求。
此文章已从旧版 PostgreSQL 网站迁移。对于迁移导致的任何格式问题,我们深表歉意。