-
Notifications
You must be signed in to change notification settings - Fork 77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Provide multi-arch images #83
Comments
That would be great! |
@galderz which images should we provide for ARM? |
I'd start just with the GraalVM and Mandrel images (the equivalent of How much are the others used? If you have any ideas on the naming I'd love to hear them too :) @cescoffier can you assign this to me? |
it's all yours @galderz :-) Others are not wildly used and I don't see the use case to use s2i on ARM. |
…round-IPv4-addresses-in-v4v6-mode Bug 1801407: Omit brackets around IPv4 addresses in v4v6 mode
Its been a while any tracktion to this. Dockerfile.graalvmaarch64
to build image app we use the build command Then to build quarkus app with aarch64 we use the same container to build Once the app is build to create image out of the native compiled app we use the following Dockerfile.native Dockerfile.native (ubi-minimal aarch64 image)
Can we have the following images with arm64 support.
|
The problem is that at the moment, we do not have the hardware to make progress on this task. This should be fixed in the next few months. |
Sure no issues, we are anyways using quarkus with arm64, i guess with more Mac's coming up with arm64 and cloud providers giving arm64 hardware, it might be good to add them in for new folks. Overall everyone is able to make things work anyways with workarounds hopefully we get it natively documented and supported soon. Btw: already shared at https://www.nevernull.io/blog/building-a-native-java-application-for-arm64-with-quarkus/ As time passes I am growing a bigger fan of quarkus, so just putting up to see the frework grow more acceptance with time. It's definitely a framework to bank on. Thanks for getting it on top of Java for the community. |
Also, ideally, this should be multi-arch images, not different images per arch something like the ubi8 ones:
|
Hi guys, as part of the Quarkus IOT community we have built a native ARM builder image that makes use of qemu-user-static to allow us to built ARM8 images on x86 machines. https://github.com/qiot-project/qiot-ubi-multiarch-builder. Please let us know if we could help with this |
Thx all for the feedback. We've recently updated this repo to use Cekit 4.1.0, so we should now be able to produce multi arch images (we needed cekit/cekit#761). I was exploring how multi-arch images work in docker and ended up executing the same command @jorsol suggested above:
Our immediate targets are linux/amd64 and linux/aarch64, so I'll be focusing on those. Thx all for the links and references to previous efforts. I'm currently trying to figure out how the hook the right tooling for each arch with cekit. |
FYI, I'm testing things out in galderz#3. Still WIP |
I've reached a bit of a crossroads, which I'm going to let simmer for some days. Here's a summary on where I've got so far: galderz#3 should have all required from cekit perspective, but the issue is that even if I added the QEMU and Buildx steps required to build on CI, as hinted by Marek in this Zulip chat stream, but that alone won't be enough. In essence, cekit needs to be calling docker buildx to pass in platforms, but even having an alias for docker build to docker buildx is not enough because cekit does not use the docker CLI. Instead, cekit uses the docker python client, which does not have support for buildkit. Assuming still that we use the docker builder, the simplest workaround appears to be this one. That is, hacking cekit that if More potential workarouds exist, such as using So, the simplest thing right now might be to hack cekit as explained above. |
One other workaround, as suggested by Severin, might be to use |
We've made good progress with Severin's workaround, see galderz#3. After applying the suggestion above, with a few tweaks, I was able to build multi-arch images on CI (see CI run for galderz@aee10c2). Then I tried to re-enable tests, but the aarch64 ones fail, but not to due to an error, but because the image runs very slowly. This is due to the fact that they're running emulated on top of an x86 VM. The image build messages appear but trickle very slowly, e.g.
It takes ~1m for the first native image build message to appear, vs 4 seconds for x86 (snippet take from here). I'm not sure how to fix this. To keep the tests we need to split the tests (and possibly the builds too) to run on top of an aarch64 VM. Or remove/disable the tests for aarch64? |
Just throwing my 2 cents in. I'm not sure what cekit is so can't comment on that, but I am using the buildx builder as a Github action to build JVM multi-arch images In there I am also manually constructing the manifest lists using the I've also just contributed some changes to the I haven't been able to work on the native side yet, but everything is all stubbed out while until this issue is solved. |
I've unassigned me since @cescoffier is working on more comprehensive solution (maybe #200?). To reiterate, please reply to this Stackoverflow question when this is complete. |
Posting as this might help someone else out... As a work around in multi-stage docker builds, instead of
use
The end reusult is the same, but ubi-minimal & ubi-micro images both have arm64 images. |
I've pushed the new images, which are all multi-archs. |
Hey @cescoffier circling back to this. When you say you've pushed new images, are those new images
|
Yes |
Sweet. I will then tackle getting this into superheroes after Devoxx next week. Not sure I want to tackle that at 2pm on a Friday before being gone for a week :) What could possibly go wrong? :D |
Trying to use image on aarch64 and it's not working:
The image descriptor is
wronglyassuming all images are foramd64
, see here.Since GraalVM offers aarch64 downloads, should we provode complementary images for that arch?
The text was updated successfully, but these errors were encountered: