{"id":42946257,"url":"https://github.com/cloudnative-pg/postgres-extensions-containers","last_synced_at":"2026-01-30T20:36:28.888Z","repository":{"id":317531382,"uuid":"1067811933","full_name":"cloudnative-pg/postgres-extensions-containers","owner":"cloudnative-pg","description":"Container images for community PostgreSQL extensions to be used as pluggable image volumes with CloudNativePG","archived":false,"fork":false,"pushed_at":"2026-01-28T13:29:51.000Z","size":174,"stargazers_count":28,"open_issues_count":22,"forks_count":15,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-29T01:56:00.396Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudnative-pg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":"GOVERNANCE.md","roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-01T12:29:49.000Z","updated_at":"2026-01-24T13:41:58.000Z","dependencies_parsed_at":"2025-10-01T14:40:38.419Z","dependency_job_id":null,"html_url":"https://github.com/cloudnative-pg/postgres-extensions-containers","commit_stats":null,"previous_names":["cloudnative-pg/postgres-extensions-containers"],"tags_count":0,"template":false,"template_full_name":"cloudnative-pg/cnpg-template","purl":"pkg:github/cloudnative-pg/postgres-extensions-containers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnative-pg%2Fpostgres-extensions-containers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnative-pg%2Fpostgres-extensions-containers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnative-pg%2Fpostgres-extensions-containers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnative-pg%2Fpostgres-extensions-containers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudnative-pg","download_url":"https://codeload.github.com/cloudnative-pg/postgres-extensions-containers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudnative-pg%2Fpostgres-extensions-containers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28901195,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T04:02:34.702Z","status":"ssl_error","status_checked_at":"2026-01-30T04:02:33.562Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-30T20:36:28.333Z","updated_at":"2026-01-30T20:36:28.877Z","avatar_url":"https://github.com/cloudnative-pg.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CloudNativePG](./logo/cloudnativepg.png)](https://cloudnative-pg.io/)\n\n# CNPG PostgreSQL Extensions Container Images\n\nThis repository provides **maintenance scripts** for building **immutable\ncontainer images** containing PostgreSQL extensions supported by\n[CloudNativePG](https://cloudnative-pg.io/). These images are designed to\nintegrate seamlessly with the [`image volume extensions` feature](https://cloudnative-pg.io/documentation/current/imagevolume_extensions/)\nin CloudNativePG.\n\nFor detailed instructions on building the images, see the [`BUILD.md` file](BUILD.md).\n\n---\n\n## Requirements\n\n- **CloudNativePG** ≥ 1.27\n- **PostgreSQL** ≥ 18 (requires the `extension_control_path` feature)\n- **Kubernetes** 1.33+ (with [ImageVolume feature enabled in 1.33 and 1.34](https://kubernetes.io/blog/2024/08/16/kubernetes-1-31-image-volume-source/))\n\n---\n\n## Supported Extensions\n\nCloudNativePG actively maintains the following third-party extensions, provided\nthey are maintained by their respective authors, and PostgreSQL Debian Group\n(PGDG) packages are available.\n\n| Extension | Description | Project URL |\n| :--- | :--- | :--- |\n| **[pgAudit](pgaudit)** | PostgreSQL audit extension | [https://github.com/pgaudit/pgaudit](https://github.com/pgaudit/pgaudit) |\n| **[pgvector](pgvector)** | Vector similarity search for PostgreSQL | [https://github.com/pgvector/pgvector](https://github.com/pgvector/pgvector) |\n| **[PostGIS](postgis)** | Geospatial database extension for PostgreSQL | [https://postgis.net/](https://postgis.net/) |\n\n\nExtensions are provided only for the OS versions already built by the\n[`cloudnative-pg/postgres-containers`](https://github.com/cloudnative-pg/postgres-containers) project,\nspecifically Debian `stable` and `oldstable`.\n\n---\n\n## Contribution and Maintenance Policy\n\nContributors are welcome to propose and maintain additional extensions.\n\n### Governance and Compliance\n\nThe project adheres to the following frameworks:\n\n- **Governance Model:** complies with the CloudNativePG (CNPG) Governance\n  Model, as defined in [`GOVERNANCE.md`](GOVERNANCE.md).\n- **Code of Conduct:** follows the CNCF Code of Conduct, as defined in\n  [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md).\n\n### Extension Requirements\n\nWhen proposing a new extension, the following criteria must be met:\n\n- **Licensing and IP ownership:** the extension's licensing must be compatible\n  with the project's goals. We approve all licences that are on the CNCF\n  Allowed Third-Party Licence Policy list (see\n  [CNCF Allowed Licence Policy](https://github.com/cncf/foundation/blob/main/policies-guidance/allowed-third-party-license-policy.md#cncf-allowlist-license-policy)).\n- **Structure:** only one extension can be included within an extension folder.\n- **Debian Packages:** Extension images must be built using a Debian package\n  provided by a trusted source like the\n  [PostgreSQL Global Development Group (PGDG)](https://wiki.postgresql.org/wiki/Apt).\n  This ensures compatibility with the base images and standard package\n  management procedures.\n- **Licence inclusion:** all necessary licence agreements for the extension and\n  its dependencies must be included within the extension folder (refer to the\n  examples in the `pgvector` and `postgis` folders).\n\n### Submission Process\n\n1. **Request and commitment:** Open a new issue requesting the extension.\n   The contributor(s) must agree to become \"component owners\" and maintainers\n   for that extension.\n2. **Approval:** Once approved by maintainers, the component owner(s) will be\n   added to the `CODEOWNERS` file for the specific folder.\n3. **Submission:** Component owner(s) open a Pull Request (PR) to introduce the\n   new extension. The PR is reviewed, approved, and merged.\n4. **Naming:** The name of the extension is the registry name.\n\n### Removal Policy\n\nIf component owners decide to stop maintaining their extension, and no other\ncontributors are found, the main project maintainers reserve the right to\n**unconditionally remove that extension**.\n\n---\n\n## Naming \u0026 Tagging Convention\n\nEach extension image tag follows this format:\n\n```\n\u003cextension-name\u003e:\u003cext_version\u003e-\u003ctimestamp\u003e-\u003cpg_version\u003e-\u003cdistro\u003e\n```\n\n**Example:**\nBuilding `pgvector` version `0.8.1` on PostgreSQL `18.0` for the `trixie`\ndistro, with build timestamp `202509101200`, results in:\n\n```\npgvector:0.8.1-202509101200-18-trixie\n```\n\nFor convenience, **rolling tags** should also be published:\n\n```\npgvector:0.8.1-18-trixie\npgvector:0.8.1-18-trixie\n```\n\nThis scheme ensures:\n\n- Alignment with the upstream `postgres-containers` base images\n- Explicit PostgreSQL and extension versioning\n- Multi-distro support\n\n---\n\n## Image Labels\n\nEach extension image includes OCI-compliant labels for runtime inspection\nand tooling integration. These metadata fields enable CloudNativePG and\nother tools to identify the base PostgreSQL version and OS distribution.\n\n### CloudNativePG-Specific Labels\n\n| Label | Description | Example |\n| :--- | :--- | :--- |\n| `io.cloudnativepg.image.base.name` | Base PostgreSQL container image | `ghcr.io/cloudnative-pg/postgresql:18-minimal-bookworm` |\n| `io.cloudnativepg.image.base.pgmajor` | PostgreSQL major version | `18` |\n| `io.cloudnativepg.image.base.os` | Operating system distribution | `bookworm` |\n\n### Standard OCI Labels\n\nIn addition to CloudNativePG-specific labels, all images include standard OCI\nannotations as defined by the [OCI Image Format Specification](https://github.com/opencontainers/image-spec/blob/main/annotations.md):\n\n| Label | Description |\n| :--- | :--- |\n| `org.opencontainers.image.created` | Image creation timestamp |\n| `org.opencontainers.image.version` | Extension version |\n| `org.opencontainers.image.revision` | Git commit SHA |\n| `org.opencontainers.image.title` | Human-readable image title |\n| `org.opencontainers.image.description` | Image description |\n| `org.opencontainers.image.source` | Source repository URL |\n| `org.opencontainers.image.licenses` | License identifier (Apache-2.0) |\n\nYou can inspect these labels using container tools:\n\n```bash\n# Using docker buildx imagetools\ndocker buildx imagetools inspect \u003cimage\u003e --raw | jq '.annotations'\n\n# Using skopeo\nskopeo inspect docker://\u003cimage\u003e | jq '.Labels'\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudnative-pg%2Fpostgres-extensions-containers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudnative-pg%2Fpostgres-extensions-containers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudnative-pg%2Fpostgres-extensions-containers/lists"}