diff --git a/Dockerfile b/Dockerfile index 2a9c90a2..bd365c92 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,9 +22,10 @@ USER 26 FROM minimal AS standard ARG EXTENSIONS +ARG STANDARD_ADDITIONAL_POSTGRES_PACKAGES USER root RUN apt-get update && \ - apt-get install -y --no-install-recommends locales-all ${EXTENSIONS} && \ + apt-get install -y --no-install-recommends locales-all ${STANDARD_ADDITIONAL_POSTGRES_PACKAGES} ${EXTENSIONS} && \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false && \ rm -rf /var/lib/apt/lists/* /var/cache/* /var/log/* diff --git a/docker-bake.hcl b/docker-bake.hcl index 6f68eff0..6a45a539 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -40,6 +40,7 @@ postgreSQLPreviewVersions = [ # renovate: datasource=github-releases depName=EnterpriseDB/barman versioning=loose barmanVersion = "3.14.0" +// Extensions to be included in the `standard` image extensions = [ "pgaudit", "pgvector", @@ -82,6 +83,7 @@ target "default" { PG_MAJOR = "${getMajor(pgVersion)}" BASE = "${base}" EXTENSIONS = "${getExtensionsString(pgVersion, extensions)}" + STANDARD_ADDITIONAL_POSTGRES_PACKAGES = "${getStandardAdditionalPostgresPackagesPerMajorVersion(getMajor(pgVersion))}" BARMAN_VERSION = "${barmanVersion}" } attest = [ @@ -155,6 +157,17 @@ function getExtensionsString { result = (isPreview(version) == true) ? "" : join(" ", formatlist("postgresql-%s-%s", getMajor(version), extensions)) } +// This function conditionally adds recommended PostgreSQL packages based on +// the version. For example, starting with version 18, PGDG moved `jit` out of +// the main package and into a separate one. +function getStandardAdditionalPostgresPackagesPerMajorVersion { + params = [ majorVersion ] + // Add PostgreSQL jit package from version 18 + result = join(" ", [ + majorVersion < 18 ? "" : format("postgresql-%s-jit", majorVersion) + ]) +} + function isMajorPresent { params = [major, pgVersions] result = contains([for v in pgVersions : getMajor(v)], major)