
A quick update on this work ^^^, my rpi4 and rpi3 cluster has this installed. It works, but a quick test shows a problem: https://github.com/pmatos/actions-test/runs/853192981?check_suite_focus=true#step:2:1

Of course these things never work the first time… sigh

So, it seems the plan is to use docker compose. This means composing the current racket ci image with the github actions runner. Problem is, I have never used docker compose before so will need some time to understand how to get this setup on the self hosted runners with docker compose. Will keep you up-to-date . :slightly_smiling_face:

:wave: I’m available for questions about docker compose, I’ve used it extensively. (Disclaimer: my knowledge is about two or three years out of date.)

@notjack awesome - I will definitely bother you once I get some free time to look at it.

@notjack so I was looking at https://www.linode.com/docs/applications/containers/how-to-use-docker-compose/

It seems I can specify the github-runner as a service.

However, I don’t quite understand how in the yaml file I can specify which one is the ‘main’ container.

So, I want to use the github-runner inside the racket/racket-ci
container.

Is it something like this: https://gist.github.com/pmatos/fa6918db21faeca79cd3bb00c96aff5c

I just wrote that by hand.

Wondering if it’s the depends
option that will say that the racket
service is the main one.

Another question. I have used the docker buildx qemu backend to cross-build the image.

However, the documentation https://docs.docker.com/buildx/working-with-buildx/

says: You can build multi-platform images using three different strategies that are supported by Buildx and Dockerfiles:
1. Using the QEMU emulation support in the kernel
2. Building on multiple native nodes using the same builder instance
3. Using a stage in Dockerfile to cross-compile to different architectures

So, I have used the 1st option but there are downsides as I had to workaround a qemu bug involving curl.

I can’t find doc on doing option 2.

@notjack have you ever done 2?

As in cross-building an image on native machines (in a distributed fashion)?

@pocmatos There usually isn’t a main container/service. docker compose up
will just start everything, and if you don’t want to start everything you name the specific service you want to start.

I’ve never done step 2. I haven’t used any of the buildx stuff yet, back when I was using docker a lot it was still in the very experimental stages.

@notjack ok, maybe I was confused by the word compose… I thought I could say, compose github-docker with racket-ci and it would somehow return a single image made out of these two… Need to spend some more time reading on it then and probably doing some experiments. Maybe it’s not the solution we need then.

oh, hmm

yeah compose is for running things like web services where you run a cluster of different containers all together

it’s like kubernetes / docker swarm, but for a single machine. People use it as a lightweight dev environment kind of thing