tile38 icon indicating copy to clipboard operation
tile38 copied to clipboard

Provide arm64 architecture in official Docker images

Open bb opened this issue 2 years ago • 1 comments

Is your feature request related to a problem? Please describe.

With the ARM-based Apple Silicon Macs becoming more and more common, it would be great if there was also a Docker image with arm64 architecture. If found the old ticket #180 which says there are no official ARM64 releases, even though Tile38 might work just fine. The current releases here on Github include arm and arm64 which is great.

Describe the solution you'd like

In addition to building and publishing Docker images with architecture linux/amd64, please also provide linux/arm64.

Describe alternatives you've considered

  • building my own image for local development or
  • not run Tile38 within Docker for development but use the homebrew-installed tile38

Some additional information

https://github.com/docker-library/official-images#architectures-other-than-amd64

bb avatar Nov 24 '21 16:11 bb

Sorry for the delay on responding to this.

We have an official linux/arm64 release right now that is part of the standard point releases. But I don't have an M1 machine handy and my Docker skills are lacking.

I hope to spend a little time soon, to add a docker build script to the repo.

(. I may need a little help with this feature. 😬 .)

tidwall avatar Dec 08 '21 00:12 tidwall

this issue just hit me when i upgraded to docker desktop v4.16.2 on apple/m1:

$ docker compose up t38
Error response from daemon: platform linux/arm64/v8 not supported

with docker-compose.yaml

t38:
   image: tile38/tile38:latest
  ports:
    - 127.0.0.1:9851:9851

workaround:

$ docker run --platform linux/amd64 tile38/tile38:latest

didn't find how to get it to work with docker-compose yet...

tomquas avatar Jan 21 '23 13:01 tomquas

Any update on this?

For a Go project probably the easiest thing would be to use something as goreleaser for the build and release process. Next to releasing binaries it can be used to build and release multi platform docker manifests. However this would change the current way you are building and releasing.

Alternatively you can use docker buildx together with a multi-stage Dockerfile to build and release your multi platform docker manifest. That would move building your binaries (for docker) inside Docker in the first build-stage and then in the next stage build the releasable container. buildx can take care of the cross building.

Finally you can create the multistage manifest manually (or add them to your scripts).

What would fit your workflow bests would you say? I'd be happy to help.

eelcocramer avatar May 02 '23 06:05 eelcocramer

This is something that I would like to have but haven't had the time to address.

Right now the deployment process includes a few small manual steps to prepare a new version of Tile38, followed by a git push that triggers GitHub actions to do some tests and push the new version to Docker.

Ideally this would stay the same but also automagically include arm64.

tidwall avatar May 02 '23 17:05 tidwall

I will take a look at your workflow to see if I can contribute to it.

eelcocramer avatar May 02 '23 17:05 eelcocramer