Skip to content

coldfront-duckdb-base is amd64-only — publish multi-arch (arm64) image #27

Description

@AntTheLimey

Summary

ghcr.io/pgedge/coldfront-duckdb-base is published amd64-only (a single
application/vnd.docker.distribution.manifest.v2+json manifest). It is the
only image in the pgEdge org that is not multi-arch — every other product
image ships a multi-arch index with native linux/amd64 + linux/arm64. As a
result, the ColdFront stack runs under emulation on Apple Silicon (and any
arm64 host), which is functional but materially slower.

Evidence

Published tags pg16, pg17, pg18 are each a single-arch manifest:

$ docker buildx imagetools inspect ghcr.io/pgedge/coldfront-duckdb-base:pg18
MediaType: application/vnd.docker.distribution.manifest.v2+json   # single manifest, not an index
# config blob: architecture: amd64, os: linux

Every other pgEdge product image is multi-arch (amd64 + arm64):

Image arches
pgedge-postgres (18-spock5-minimal) amd64 + arm64
control-plane amd64 + arm64
ai-dba-server / ai-dba-collector amd64 + arm64
postgres-mcp amd64 + arm64
ace amd64 + arm64
rag-server amd64 + arm64
postgrest amd64 + arm64
nla-web amd64 + arm64
cloudnative-pg amd64 + arm64
plugin-barman-cloud amd64 + arm64
coldfront-duckdb-base amd64 only

Why this is straightforward to fix

  • coldfront-duckdb-base is built FROM ghcr.io/pgedge/pgedge-postgres:<pg>-spock5-minimal, which already has a native arm64 build — the arm64 foundation exists.
  • .github/workflows/base-image.yml already supports arch=arm64 on native ubuntu-24.04-arm runners. It has simply never been run with arch=arm64 push=true.

Proposed fix

  1. Build + push the arm64 bases: run base-image.yml with arch=arm64 pg=all push=true (produces pg{16,17,18}-arm64).
  2. Publish a multi-arch manifest list for the bare pg<major> tags so they resolve natively on both arches (e.g. docker buildx imagetools create -t …:pg18 …:pg18-amd64 …:pg18-arm64), and update base-image.yml to do this as part of a normal publish.
  3. Verify: docker manifest inspect ghcr.io/pgedge/coldfront-duckdb-base:pg18 shows both amd64 and arm64.

Related (separate gap, for tracking)

ColdFront also has no APT or DNF packages published in the pgEdge Enterprise
repos (apt.pgedge.com / dnf.pgedge.com) on any architecture, while every
other beta product is present (and ships aarch64). Likely the same
beta-launch packaging miss; worth a separate issue with the release owners.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions