Releases for ARM64

Moved from GitHub dgraph/5566

Posted by TiemenSch:

Experience Report

Hi, ARM64 support was already requested and confirmed as a conclusion of #3586, but official releases of Dgraph haven’t been included. It would be awesome if the Docker images of Dgraph would be cross-compiled and included in the manifests so they work on ARM64 out of the box.

What you wanted to do

Run Dgraph on my Raspberry Pi 4 K3s cluster. I believe that the enthousiasts (like me) that want to try out Dgraph might just have an ARM server or cluster at home which requires ARM64 binaries or images.

What you actually did

Currently, I made a pipeline over at Gitlab that compiles to ARM64 and stores a Docker image. That image seems to work on my Raspberry Pi 4’s as a demo cluster. See:


registry.gitlab.com/tiemen/dgraph-aarch64:latest

Why that wasn’t great, with examples

It’s better to have a single “official” source of cross-compiled images in a single manifest. I’m for instance not sure what the compiled binary expects on the system, which is why I don’t know if I can get away with a clean alpine image with the binary dropped in in the long run. (e.g. user rights, folder structure, etc.)

Any external references to support your case

My custom setup uses Docker buildx: https://docs.docker.com/buildx/working-with-buildx/
I would be happy to submit a PR that mimics this, but as this influences your release process (and I usually work with Gitlab pipelines) I’m not entirely sure how this should work.

jamesjarvis commented :

+1 this, would be a great (and simple) addition to have multi-arch docker images :smile:

Edit: Looks like multi-arch compiling would require also modifying the way each of the binaries are compiled, since all releases are built from the same script https://github.com/dgraph-io/dgraph/blob/master/contrib/release.sh

TiemenSch commented :

The most important binary by far is the dgraph one itself, as ratel should be able to run remotely and tap into your database. Compiling ratel was also slightly more tricky in my limited attempt. I think an initial PR for the dgraph binary only would already go a long way!

Really hoping this gets picked up soon, because my custom built pipeline is getting stuck on some peculiar issues.

When ARM64 support has been released, will we see Android and iOS capable of making a Dgraph server? :smiley:

Honestly, that could be one of my big dreams. (So, I don’t have to turn on my computer every time I want to access my Dgraph database.)

Update: I’m also thinking it could be another unique selling point of Dgraph (compared to other database management systems).

1 Like

That seems a bit of a far-fetched use-case to be honest (you would have to design a complete app around this, and somehow maintain a server running on some device that travels throughout the world). Completely different issue, which naturally needs this compilation issue to be completed first ;).

ARM in general is making a good name for itself as far as architectures go and the Go language used to build Dgraph has cross-compilation built in. It does take some effort rewriting the current CI/CD pipelines and optionally finding some ARM hardware for that. Docker buildx may be a short-term alternative to emulate ARM64, too. Also, I wouldn’t mind opening up my three piece RPi4 cluster for some initial CI/CD testing.

Here’s to hoping this gets picked up soon! I think it would be great for enthusiasts to start tinkering on their Raspberries with it.

1 Like