-
Notifications
You must be signed in to change notification settings - Fork 683
feat: create arm64 architecture docker build at release #3037
Conversation
I'm dumb when it comes to Docker so I have questions: Will this increase the container sizes significantly? I thought the point of Docker was to abstract the complexities of the host OS and architecture away, so that what ever is in the container would "Just Work". Is that not the case anymore? |
This won't change the image's size (or to my knowledge) but will create several architectural versions of the image. That will increase the size stored on the Docker Registry, but I don't think that is a problem for you. Docker works more on the OS-abstraction layer utilizing the host's Linux kernel and its capabilities for most of the work and is not really capable to abstract different architectures. You can for example see in the Node's Docker images that there are "OS/ARCH" versions for one Image tag. Nowadays the previously marginal architectures are picking up a bigger market share, for example, the new Apple Macs runs on ARM architecture. They are still able to run the AMD64 architecture images because they have the emulation layer (Rosetta), but other platforms might not have this capability and it is generally better to run native instead of emulated code. If you are interested to understand bit more, there is for example nice blog post about this topic here: https://medium.com/icetek/understanding-how-docker-multi-arch-images-work-9a7e035e2868 |
Cool. Thanks for the explanation. This sounds like it'll be a much needed addition! Do y'all need this soon? We're in the middle of a hackathon that runs until next week and weren't planning on cutting a release this week, and testing changes to the automated release process always takes a lot of time. |
No rush. Enjoy your hackathon 😉 |
Looks like the arm/v7 build is failing due to memory issues (after stalling for a long time): https://github.com/trufflesuite/ganache/runs/6574833364?check_suite_focus=true Is 32 bit ARM popular enough to warrant figuring this out? |
Honestly, hard to say 😳 My personal pain is missing the |
@AuHau do you mind trying Docker image |
Seems like it runs as expected! I don't see the usual warning that it is uncompatible architecture. Only thing is that it seems like you are using (or some of your dependency) some precompiled binaries that are not present for this architecture? The logs:
Full logs
|
This adds support for multi-architecture builds as described https://github.com/docker/build-push-action/blob/master/docs/advanced/multi-platform.md
The platforms chosen are those that your base image supports: https://hub.docker.com/layers/node/library/node/14.17.4-stretch/images/sha256-1008070b2f1b15a7a3661b91d64662de82fb97a2219e0bc8392e9cdb9d8402ff?context=explore
I would suggest testing this somehow, but that is out of my possibility.