Building for armv7l architecture on OSX / pushing to Docker Hub

Hi,

I’m trying to get RolfKoenders/potato (Mr. Potato, a Slack bot for CouchPotato) working under docker on a Raspberry Pi 4.

The dockerfile for that repo seems to be outdated, so I forked it and have been trying to build locally and pushing the image to Docker Hub so the Pi can pull it down.

After linking the repo to github, I enabled Docker’s experimental mode and tried to use buildx to create the image.

I’m the running:

docker buildx create --name multibuilder
docker buildx use multibuilder
docker buildx build --platform linux/arm/v7 -t rozling/potato --push .

The changes get pushed, but Docker Hub keeps trying to build with amd64 architecture.

I’ve tried following these tutorials:

https://blog.hypriot.com/post/setup-simple-ci-pipeline-for-arm-images/
https://www.balena.io/blog/building-arm-containers-on-any-x86-machine-even-dockerhub/

But I’ve come away more confused than before: this stuff seems to be a mess of interdependencies.

In the first post, the key step seems to be:

Register QEMU in the build agent
The next step is to register QEMU in the build agent. There is a Docker image available that can do this for us in just one line:

docker run --rm --privileged multiarch/qemu-user-static:register --reset
That’s it. Just add this line to your YAML file before the other docker commands.

But I’ve no idea what YAML file they’re talking about; if this was a Dockerfile command it would start with RUN, right?

And I’m fairly new to Dockerfile syntax so I don’t get how using their qemu image makes things easier, or how I go from that point to pulling the node images I want to use, which I know have armv7 compatibility.

The second article seems to be for a slightly different architecture, armv7hf, and seems even more complex, so I’m not sure how useful it is.

Has anyone done this before, and can you point me in the right direction?

Thanks!