Central install fails on ARM64 CPU

1. What is the issue? Please be detailed.
Following https://docs.getodk.org/central-install-digital-ocean/# to install ODK Central on Ubuntu 22.04 (not at Digital Ocean) fails with the following error:

(Could not post the error due to max 2 links per post)

2. What steps can we take to reproduce this issue?
Follow that link to installing central on digital ocean on a fresh ubuntu 22.04 install. (Does it matter it's Ampere instead of Intel CPU???)

3. What have you tried to fix the issue?
Delete everything and do it again.

4. Upload any forms or screenshots you can share publicly below.

[postgres internal] load metadata for docker > tianon > postgres-upgrade:9.6-to-14:

failed to solve: tianon/postgres-upgrade:9.6-to-14: no match for platform in manifest sha256:2ff78f791338b3502c8b61dc148f1e7e8a4ebdd7f69f2cdd33f0f31ec16f7896: not found

Yes, it's because your CPU is ARM and we currently only support AMD. Or rather, most Docker images work on AMD and ARM support is something that needs to be added.

In the case of ODK, once the fixes are done upstream (e.g., in tianon's docker-postgres-upgrade), I expect Central will work just great on ARM.

If you are technical, perhaps you can file an issue at https://github.com/tianon/docker-postgres-upgrade/issues and help tianon add ARM support.

@spwoodcock Based on Bcrypt dependency install fails on ARM64 architectures it seems you are using ARM64. Is this postgres-upgrade issue something you've run into?

@yanokwa I am not actually using ARM64 anywhere currently, but was just trying to simplify the deployment of our tool for Mac users mostly (i.e. pulling instead of building).

Building the images on ARM64 should not typically be an issue, as most bases (the FROM in dockerfiles) are multi-arch. However I can see four potential failure points in the compose stack:

  • The postgres upgrade image extends an AMD64 image.
  • The pyxform image is prebuilt to AMD64 only.
  • The Enketo image extends an ARM64 image.
  • The issue with dependencies during the Central service (backend) build, as linked above.

I believe the other images should build without issue.

To run the full stack ARM64, the solution is to make the docker-postgres-upgrade, enketo and pyxform images multi-arch upstream, not a small task!

The problem described in this thread is because the pg upgrade container is the first in the docker compose stack, so it's the first to fail.


Thank you very much for the answers! I will just start a new non-arm server for this. Might be good to put that in the docs, possibly. The error message is a bit unclear, although it does talk about 'platform'.