Publish the image for linux/arm64 as well as linux/amd64

Open
#305 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
55/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
docker, docker-compose, github-actions, typescript

Research direction

Start with .github/workflows/docker.yml to see how the image is built and pushed, then check the release steps and upgrading guide mentioned in the issue. Build and publish amd64 and arm64 images under the existing tags, verify the arm64 image starts and /api/auth/status responds, and update both guides to note when multi-architecture images begin.

Written by the indexing model from the issue text.

Description

enhancement

.github/workflows/docker.yml builds the image without platforms:, so ghcr.io/thecodacus/pithagoras:0.2.0 and :latest are linux/amd64 only, plus an attestation entry. Checked on 2026-10-24:

$ docker pull --platform linux/arm64 ghcr.io/thecodacus/pithagoras:0.2.0
Error response from daemon: no matching manifest for linux/arm64 in the manifest list entries

So on Apple Silicon (Docker Desktop, OrbStack, Colima) and on arm64 servers, the image that docker-compose.portainer.yml names can't be pulled as it is. It only runs with DOCKER_DEFAULT_PLATFORM=linux/amd64, under emulation. Building from source with docker compose up -d --build is not affected.

What we want

  • docker.yml builds linux/amd64 and linux/arm64 and pushes one manifest under the same tags (latest, the version, the commit). Either QEMU with buildx platforms, or a native arm64 runner (ubuntu-24.04-arm), which is much faster.
  • Check that everything the image needs exists for arm64. The base images do: node:22-slim, docker:27-cli and ghcr.io/astral-sh/uv all publish arm64. Native modules (better-sqlite3 and the rest) need to build for it.
  • Smoke-test the arm64 image: start it and check /api/auth/status. Tests run on amd64 only today.
  • Note in the release steps and the upgrading guide that the image is multi-arch from that release on.
Dominant language
TypeScript
Stars
297
Forks
81
Avg merge
5h 30m
Merged PRs (30d)
153

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from thecodacus/pithagoras

All issues in thecodacus/pithagoras

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.