micronaut-gradle-plugin
micronaut-gradle-plugin copied to clipboard
dockerBuildNative fails for M1 Mac
Issue description
Fails with:
Step 7/27 : RUN /usr/lib/graalvm/bin/gu install native-image
---> Running in 9c70de6b3c35
/lib64/ld-linux-x86-64.so.2: No such file or directory
> Task :app:dockerBuildNative
Building image using context '/Users/sdelamo/github/contactvault/app/build/docker/native-main'.
Using Dockerfile '/Users/sdelamo/github/contactvault/app/build/docker/native-main/DockerfileNative'
Using images 'app'.
Step 1/27 : FROM amazonlinux:latest AS graalvm
---> a1a0df532d4a
Step 2/27 : ENV LANG=en_US.UTF-8
---> Running in 76c383d38806
Removing intermediate container 76c383d38806
---> 7f3c657e9c49
Step 3/27 : RUN yum install -y gcc gcc-c++ libc6-dev zlib1g-dev curl bash zlib zlib-devel zlib-static zip tar gzip
---> Running in d8e4c3c137ba
Loaded plugins: ovl, priorities
No package libc6-dev available.
No package zlib1g-dev available.
Package bash-4.2.46-34.amzn2.aarch64 already installed and latest version
Package zlib-1.2.7-19.amzn2.0.1.aarch64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package curl.aarch64 0:7.79.1-1.amzn2.0.1 will be updated
---> Package curl.aarch64 0:7.79.1-2.amzn2.0.1 will be an update
--> Processing Dependency: libcurl(aarch-64) = 7.79.1-2.amzn2.0.1 for package: curl-7.79.1-2.amzn2.0.1.aarch64
---> Package gcc.aarch64 0:7.3.1-14.amzn2 will be installed
--> Processing Dependency: libgomp = 7.3.1-14.amzn2 for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: cpp = 7.3.1-14.amzn2 for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: libsanitizer >= 7.3.1-14.amzn2 for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: libitm >= 7.3.1-14.amzn2 for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: libatomic >= 7.3.1-14.amzn2 for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: binutils >= 2.24 for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: libubsan.so.0()(64bit) for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: libmpfr.so.4()(64bit) for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: libmpc.so.3()(64bit) for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: libitm.so.1()(64bit) for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: libgomp.so.1()(64bit) for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: libatomic.so.1()(64bit) for package: gcc-7.3.1-14.amzn2.aarch64
--> Processing Dependency: libasan.so.4()(64bit) for package: gcc-7.3.1-14.amzn2.aarch64
---> Package gcc-c++.aarch64 0:7.3.1-14.amzn2 will be installed
---> Package gzip.aarch64 0:1.5-10.amzn2.0.1 will be installed
---> Package tar.aarch64 2:1.26-35.amzn2 will be installed
---> Package zip.aarch64 0:3.0-11.amzn2.0.2 will be installed
---> Package zlib-devel.aarch64 0:1.2.7-19.amzn2.0.1 will be installed
--> Processing Dependency: /usr/bin/pkg-config for package: zlib-devel-1.2.7-19.amzn2.0.1.aarch64
---> Package zlib-static.aarch64 0:1.2.7-19.amzn2.0.1 will be installed
--> Running transaction check
---> Package binutils.aarch64 0:2.29.1-31.amzn2 will be installed
---> Package cpp.aarch64 0:7.3.1-14.amzn2 will be installed
---> Package glibc-devel.aarch64 0:2.26-58.amzn2 will be installed
--> Processing Dependency: glibc-headers = 2.26-58.amzn2 for package: glibc-devel-2.26-58.amzn2.aarch64
--> Processing Dependency: glibc-headers for package: glibc-devel-2.26-58.amzn2.aarch64
---> Package libatomic.aarch64 0:7.3.1-14.amzn2 will be installed
---> Package libcurl.aarch64 0:7.79.1-1.amzn2.0.1 will be updated
---> Package libcurl.aarch64 0:7.79.1-2.amzn2.0.1 will be an update
---> Package libgomp.aarch64 0:7.3.1-14.amzn2 will be installed
---> Package libitm.aarch64 0:7.3.1-14.amzn2 will be installed
---> Package libmpc.aarch64 0:1.0.1-3.amzn2.0.2 will be installed
---> Package libsanitizer.aarch64 0:7.3.1-14.amzn2 will be installed
---> Package mpfr.aarch64 0:3.1.1-4.amzn2.0.2 will be installed
---> Package pkgconfig.aarch64 1:0.27.1-4.amzn2.0.2 will be installed
--> Running transaction check
---> Package glibc-headers.aarch64 0:2.26-58.amzn2 will be installed
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.26-58.amzn2.aarch64
--> Processing Dependency: kernel-headers for package: glibc-headers-2.26-58.amzn2.aarch64
--> Running transaction check
---> Package kernel-headers.aarch64 0:4.14.276-211.499.amzn2 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
gcc aarch64 7.3.1-14.amzn2 amzn2-core 18 M
gcc-c++ aarch64 7.3.1-14.amzn2 amzn2-core 11 M
gzip aarch64 1.5-10.amzn2.0.1 amzn2-core 128 k
tar aarch64 2:1.26-35.amzn2 amzn2-core 851 k
zip aarch64 3.0-11.amzn2.0.2 amzn2-core 261 k
zlib-devel aarch64 1.2.7-19.amzn2.0.1 amzn2-core 50 k
zlib-static aarch64 1.2.7-19.amzn2.0.1 amzn2-core 58 k
Updating:
curl aarch64 7.79.1-2.amzn2.0.1 amzn2-core 359 k
Installing for dependencies:
binutils aarch64 2.29.1-31.amzn2 amzn2-core 6.2 M
cpp aarch64 7.3.1-14.amzn2 amzn2-core 7.7 M
glibc-devel aarch64 2.26-58.amzn2 amzn2-core 994 k
glibc-headers aarch64 2.26-58.amzn2 amzn2-core 502 k
kernel-headers aarch64 4.14.276-211.499.amzn2 amzn2-core 1.1 M
libatomic aarch64 7.3.1-14.amzn2 amzn2-core 45 k
libgomp aarch64 7.3.1-14.amzn2 amzn2-core 205 k
libitm aarch64 7.3.1-14.amzn2 amzn2-core 84 k
libmpc aarch64 1.0.1-3.amzn2.0.2 amzn2-core 53 k
libsanitizer aarch64 7.3.1-14.amzn2 amzn2-core 651 k
mpfr aarch64 3.1.1-4.amzn2.0.2 amzn2-core 208 k
pkgconfig aarch64 1:0.27.1-4.amzn2.0.2 amzn2-core 54 k
Updating for dependencies:
libcurl aarch64 7.79.1-2.amzn2.0.1 amzn2-core 322 k
Transaction Summary
================================================================================
Install 7 Packages (+12 Dependent packages)
Upgrade 1 Package (+ 1 Dependent package)
Total download size: 49 M
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
--------------------------------------------------------------------------------
Total 39 MB/s | 49 MB 00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : mpfr-3.1.1-4.amzn2.0.2.aarch64 1/23
Installing : libmpc-1.0.1-3.amzn2.0.2.aarch64 2/23
Installing : cpp-7.3.1-14.amzn2.aarch64 3/23
Installing : binutils-2.29.1-31.amzn2.aarch64 4/23
Installing : libitm-7.3.1-14.amzn2.aarch64 5/23
Installing : 1:pkgconfig-0.27.1-4.amzn2.0.2.aarch64 6/23
Installing : zlib-devel-1.2.7-19.amzn2.0.1.aarch64 7/23
Installing : libatomic-7.3.1-14.amzn2.aarch64 8/23
Installing : kernel-headers-4.14.276-211.499.amzn2.aarch64 9/23
Installing : glibc-headers-2.26-58.amzn2.aarch64 10/23
Installing : glibc-devel-2.26-58.amzn2.aarch64 11/23
Updating : libcurl-7.79.1-2.amzn2.0.1.aarch64 12/23
Installing : libsanitizer-7.3.1-14.amzn2.aarch64 13/23
Installing : libgomp-7.3.1-14.amzn2.aarch64 14/23
Installing : gcc-7.3.1-14.amzn2.aarch64 15/23
Installing : gcc-c++-7.3.1-14.amzn2.aarch64 16/23
Updating : curl-7.79.1-2.amzn2.0.1.aarch64 17/23
Installing : zlib-static-1.2.7-19.amzn2.0.1.aarch64 18/23
Installing : zip-3.0-11.amzn2.0.2.aarch64 19/23
Installing : gzip-1.5-10.amzn2.0.1.aarch64 20/23
Installing : 2:tar-1.26-35.amzn2.aarch64 21/23
Cleanup : curl-7.79.1-1.amzn2.0.1.aarch64 22/23
Cleanup : libcurl-7.79.1-1.amzn2.0.1.aarch64 23/23
Verifying : libgomp-7.3.1-14.amzn2.aarch64 1/23
Verifying : curl-7.79.1-2.amzn2.0.1.aarch64 2/23
Verifying : 2:tar-1.26-35.amzn2.aarch64 3/23
Verifying : cpp-7.3.1-14.amzn2.aarch64 4/23
Verifying : mpfr-3.1.1-4.amzn2.0.2.aarch64 5/23
Verifying : libsanitizer-7.3.1-14.amzn2.aarch64 6/23
Verifying : gzip-1.5-10.amzn2.0.1.aarch64 7/23
Verifying : glibc-headers-2.26-58.amzn2.aarch64 8/23
Verifying : libmpc-1.0.1-3.amzn2.0.2.aarch64 9/23
Verifying : libcurl-7.79.1-2.amzn2.0.1.aarch64 10/23
Verifying : kernel-headers-4.14.276-211.499.amzn2.aarch64 11/23
Verifying : zip-3.0-11.amzn2.0.2.aarch64 12/23
Verifying : libatomic-7.3.1-14.amzn2.aarch64 13/23
Verifying : zlib-devel-1.2.7-19.amzn2.0.1.aarch64 14/23
Verifying : 1:pkgconfig-0.27.1-4.amzn2.0.2.aarch64 15/23
Verifying : libitm-7.3.1-14.amzn2.aarch64 16/23
Verifying : binutils-2.29.1-31.amzn2.aarch64 17/23
Verifying : zlib-static-1.2.7-19.amzn2.0.1.aarch64 18/23
Verifying : gcc-7.3.1-14.amzn2.aarch64 19/23
Verifying : glibc-devel-2.26-58.amzn2.aarch64 20/23
Verifying : gcc-c++-7.3.1-14.amzn2.aarch64 21/23
Verifying : curl-7.79.1-1.amzn2.0.1.aarch64 22/23
Verifying : libcurl-7.79.1-1.amzn2.0.1.aarch64 23/23
Installed:
gcc.aarch64 0:7.3.1-14.amzn2
gcc-c++.aarch64 0:7.3.1-14.amzn2
gzip.aarch64 0:1.5-10.amzn2.0.1
tar.aarch64 2:1.26-35.amzn2
zip.aarch64 0:3.0-11.amzn2.0.2
zlib-devel.aarch64 0:1.2.7-19.amzn2.0.1
zlib-static.aarch64 0:1.2.7-19.amzn2.0.1
Dependency Installed:
binutils.aarch64 0:2.29.1-31.amzn2
cpp.aarch64 0:7.3.1-14.amzn2
glibc-devel.aarch64 0:2.26-58.amzn2
glibc-headers.aarch64 0:2.26-58.amzn2
kernel-headers.aarch64 0:4.14.276-211.499.amzn2
libatomic.aarch64 0:7.3.1-14.amzn2
libgomp.aarch64 0:7.3.1-14.amzn2
libitm.aarch64 0:7.3.1-14.amzn2
libmpc.aarch64 0:1.0.1-3.amzn2.0.2
libsanitizer.aarch64 0:7.3.1-14.amzn2
mpfr.aarch64 0:3.1.1-4.amzn2.0.2
pkgconfig.aarch64 1:0.27.1-4.amzn2.0.2
Updated:
curl.aarch64 0:7.79.1-2.amzn2.0.1
Dependency Updated:
libcurl.aarch64 0:7.79.1-2.amzn2.0.1
Complete!
Removing intermediate container d8e4c3c137ba
---> 89a25532d149
Step 4/27 : RUN curl -4 -L https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.1.0/graalvm-ce-java11-linux-amd64-22.1.0.tar.gz -o /tmp/graalvm-ce-java11-linux-amd64-22.1.0.tar.gz
---> Running in defaa0a9fe59
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
5 421M 5 23.9M 0 0 16.7M 0 0:00:25 0:00:01 0:00:24 27.7M
14 421M 14 60.9M 0 0 25.0M 0 0:00:16 0:00:02 0:00:14 32.7M
23 421M 23 97.7M 0 0 28.5M 0 0:00:14 0:00:03 0:00:11 34.1M
31 421M 31 133M 0 0 30.2M 0 0:00:13 0:00:04 0:00:09 34.6M
36 421M 36 156M 0 0 28.4M 0 0:00:14 0:00:05 0:00:09 31.7M
41 421M 41 175M 0 0 27.2M 0 0:00:15 0:00:06 0:00:09 30.2M
44 421M 44 188M 0 0 25.2M 0 0:00:16 0:00:07 0:00:09 25.3M
47 421M 47 202M 0 0 24.0M 0 0:00:17 0:00:08 0:00:09 20.9M
51 421M 51 216M 0 0 22.7M 0 0:00:18 0:00:09 0:00:09 16.1M
54 421M 54 229M 0 0 21.9M 0 0:00:19 0:00:10 0:00:09 14.8M
57 421M 57 244M 0 0 21.2M 0 0:00:19 0:00:11 0:00:08 13.5M
62 421M 62 264M 0 0 21.1M 0 0:00:19 0:00:12 0:00:07 15.1M
67 421M 67 284M 0 0 21.0M 0 0:00:19 0:00:13 0:00:06 16.2M
72 421M 72 304M 0 0 21.0M 0 0:00:20 0:00:14 0:00:06 17.7M
76 421M 76 324M 0 0 20.9M 0 0:00:20 0:00:15 0:00:05 18.8M
81 421M 81 344M 0 0 20.9M 0 0:00:20 0:00:16 0:00:04 20.0M
86 421M 86 364M 0 0 20.8M 0 0:00:20 0:00:17 0:00:03 20.0M
91 421M 91 384M 0 0 20.8M 0 0:00:20 0:00:18 0:00:02 20.0M
93 421M 93 394M 0 0 20.3M 0 0:00:20 0:00:19 0:00:01 18.2M
96 421M 96 405M 0 0 19.8M 0 0:00:21 0:00:20 0:00:01 16.3M
98 421M 98 415M 0 0 19.3M 0 0:00:21 0:00:21 --:--:-- 14.3M
100 421M 100 421M 0 0 19.1M 0 0:00:22 0:00:22 --:--:-- 12.6M
Removing intermediate container defaa0a9fe59
---> df833a4a98f0
Step 5/27 : RUN tar -zxf /tmp/graalvm-ce-java11-linux-amd64-22.1.0.tar.gz -C /tmp && mv /tmp/graalvm-ce-java11-22.1.0 /usr/lib/graalvm
---> Running in 01b75b321d68
Removing intermediate container 01b75b321d68
---> ff4c3fe5a33c
Step 6/27 : RUN rm -rf /tmp/*
---> Running in 5056b8212071
Removing intermediate container 5056b8212071
---> f96e1d349622
Step 7/27 : RUN /usr/lib/graalvm/bin/gu install native-image
---> Running in 9c70de6b3c35
/lib64/ld-linux-x86-64.so.2: No such file or directory
> Task :app:dockerBuildNative FAILED
FAILURE: Build failed with an exception.
On an M1 mac, FROM amazonlinux:latest AS graalvm
is pulling an ARM container
The dockerfile then pulls the x86 graalvm graalvm-ce-java11-linux-amd64-22.1.0.tar.gz
and it all goes downhill from there
I generated a Micronaut CLI application via launch including the GraalVM feature. I chose Java 17, but the generated DockerfileNative contains FROM ghcr.io/graalvm/native-image:ol7-java11-22.1.0 AS graalvm
. When I run the dockerBuildNative
it shows following error and hangs:
Exception in thread "docker-java-stream--81718606" java.lang.UnsatisfiedLinkError: ~/Library/Caches/JNA/temp/jna10424641273110463416.tmp: dlopen(~/Library/Caches/JNA/temp/jna10424641273110463416.tmp, 0x0001): tried: '~/Library/Caches/JNA/temp/jna10424641273110463416.tmp' (fat file, but missing compatible architecture (have 'i386,x86_64', need 'arm64e'))
at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
When I change the generated DockerfileNative to start with ghcr.io/graalvm/native-image:ol7-java11-22.1.0 AS graalvm
and then build with the below command it works fine.
docker build --platform linux/arm64/v8 -t <image name>:latest ./build/docker/native-main -f ./build/docker/native-main/DockerfileNative
But then, when I run, I get the following:
standard_init_linux.go:228: exec user process caused: no such file or directory
When I do the whole process with dockerBuild
, it works.
any updates?
I'm able to run ./gradlew dockerBuildNative
and the image gets created successfully, but when i try to run the image I get the following error:
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
exec /app/application: no such file or directory
dockerfile {
if (System.getProperty("os.arch") == "aarch64") {
baseImage.set("public.ecr.aws/lambda/java:11-arm64")
} else {
baseImage.set("public.ecr.aws/lambda/java:11")
}
}
I get exactly the same error as @luisospina-sealed, any updates?
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
exec /app/application: no such file or directory
I was following the steps from the micronaut guide: https://guides.micronaut.io/latest/micronaut-creating-first-graal-app-maven-java.html
Worked around it by specifying a different docker image. Couldn't find a glibc image compatible with linux/arm64, so used ubuntu for now:
<plugin>
<groupId>io.micronaut.build</groupId>
<artifactId>micronaut-maven-plugin</artifactId>
<configuration>
<baseImageRun>ubuntu:latest</baseImageRun>
</configuration>
</plugin>
I am getting same issue with maven and windows post upgrading to micronaut 4.x where as I am running it on x64 ant not arm64, https://github.com/micronaut-projects/micronaut-maven-plugin/issues/805