Impossible to build amd-64 docker on Mac M3 machine
borisgob opened this issue Β· 17 comments
Starting 3.4.3 version of jib-maven-plugin
it is not possible to build amd-64 image on Mac with Mx chip (arm-64)
I didn't find a setting, that fix it. There is no problem with 3.4.2 version.
@borisgob Thanks for filing this issue! Would you be able to share more information on your jib configuration and the error you are currently running into?
Same issue on Mac M1 after updating to 3.4.3
version π
Info
About the base image used : only available for amd64
About plugin configuration: nothing special
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<configuration>
<from>
<image>
ghcr.io/image:XX@shaXX
</image>
<auth>
...
</auth>
</from>
<to>
<image>my/image:${docker.image.version}</image>
</to>
<container>
<creationTime>USE_CURRENT_TIMESTAMP</creationTime>
<mainClass>com.application.Application</mainClass>
<ports>
<port>8080</port>
</ports>
<user>64325:64325</user>
<labels>
...
</labels>
</container>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>dockerBuild</goal>
</goals>
</execution>
</executions>
</plugin>
Error message from maven
:
[INFO] --- jib:3.4.3:dockerBuild (default) @ application ---
[INFO]
[INFO] Containerizing application to Docker daemon as my-app...
[INFO]
[INFO] Container entrypoint set to [java, -cp, @/app/jib-classpath-file, com.application.Application]
[INFO] Executing tasks:
[INFO] [======================== ] 80.0% complete
[INFO] > building image to Docker daemon
...
[ERROR] Failed to execute goal com.google.cloud.tools:jib-maven-plugin:3.4.3:dockerBuild (default) on project application: The configured platforms don't match the Docker Engine's OS and architecture (linux/arm64) -> [Help 1]
In debug mode:
[DEBUG] TIMING Building image to Docker daemon
[DEBUG] Containerizing application with the following files:
[DEBUG] Dependencies:
...
[DEBUG] TIMING Pulling base image manifest
[DEBUG] TIMING Preparing application layer builders
[DEBUG] TIMED Preparing application layer builders : 0.388 ms
[DEBUG] TIMING Building dependencies layer
[DEBUG] TIMING Building project dependencies layer
[DEBUG] TIMING Building resources layer
[DEBUG] TIMING Building classes layer
[DEBUG] TIMING Building jvm arg files layer
[DEBUG] TIMED Pulling base image manifest : 62.52 ms
[DEBUG] TIMING Pulling base image layer sha256:4abcf20661432fb2d719aaf90656f55c287f8ca915dc1c92ec14ff61e67fbaf8
[DEBUG] TIMING Pulling base image layer sha256:a21a63612cbe8d148f75173be90696fbe03e2a6e9c901e2c039bcf1bcdeec0b9
[DEBUG] TIMING Pulling base image layer sha256:92d6f603e71eafc432daa1850d612282a283263fbb867595b6f677946432b353
[DEBUG] TIMING Pulling base image layer sha256:b8be18af9f33213bbcb3d22cccdf9fd2321c4373d32042c9c425e84dc590fb18
[DEBUG] TIMING Pulling base image layer sha256:307132abc4f541c0c7c295dbabe80b2fdad4f7a9c6949563fe97be8f77000f38
[DEBUG] TIMING Pulling base image layer sha256:704a4a6d46b80fc86ad623edf11cb31db58102ba82bf7688b9c8ee651142953f
[DEBUG] TIMING Pulling base image layer sha256:ce0cd2cbd63b93556aa46f4d50c1e35121b3ebba07a6db67343d1d545a168544
[DEBUG] TIMED Pulling base image layer sha256:ce0cd2cbd63b93556aa46f4d50c1e35121b3ebba07a6db67343d1d545a168544 : 1.525 ms
[DEBUG] TIMED Pulling base image layer sha256:b8be18af9f33213bbcb3d22cccdf9fd2321c4373d32042c9c425e84dc590fb18 : 3.186 ms
[DEBUG] TIMED Pulling base image layer sha256:92d6f603e71eafc432daa1850d612282a283263fbb867595b6f677946432b353 : 4.639 ms
[DEBUG] TIMED Pulling base image layer sha256:a21a63612cbe8d148f75173be90696fbe03e2a6e9c901e2c039bcf1bcdeec0b9 : 4.67 ms
[DEBUG] TIMED Pulling base image layer sha256:704a4a6d46b80fc86ad623edf11cb31db58102ba82bf7688b9c8ee651142953f : 3.815 ms
[DEBUG] TIMED Pulling base image layer sha256:307132abc4f541c0c7c295dbabe80b2fdad4f7a9c6949563fe97be8f77000f38 : 4.28 ms
[DEBUG] TIMED Pulling base image layer sha256:4abcf20661432fb2d719aaf90656f55c287f8ca915dc1c92ec14ff61e67fbaf8 : 11.745 ms
[DEBUG] Building jvm arg files layer built sha256:da783be6a548852a92c671870d2f0cd5e5e72392f705820b613580d7df6e3b83
[DEBUG] TIMED Building jvm arg files layer : 101.762 ms
[DEBUG] Building classes layer built sha256:eb5150fbd5f53f3add587da5a5b5c4cf024b94e83aea2b7513e8f3a2922271d7
[DEBUG] TIMED Building classes layer : 131.291 ms
[DEBUG] Building resources layer built sha256:ef5ada1b8da915665facba8f93fa75ba8e2f85495661a7648a5e15c0b552ccd2
[DEBUG] TIMED Building resources layer : 159.77 ms
[DEBUG] Building project dependencies layer built sha256:33f341327dd567d515afcdab661a3cb9312127429c21881fbee8809b4271f788
[DEBUG] TIMED Building project dependencies layer : 229.413 ms
[DEBUG] Building dependencies layer built sha256:891ab74e1ac83d8b055f87125a60f200584cd3f21ef43d15b175f5144a364236
[DEBUG] TIMED Building dependencies layer : 3594.467 ms
[DEBUG] TIMING Building container configuration
[INFO]
[INFO] Container entrypoint set to [java, -cp, @/app/jib-classpath-file, com.application.Application]
[DEBUG] TIMED Building container configuration : 1.02 ms
[DEBUG] TIMED Building image to Docker daemon : 3611.31 ms
[INFO] Executing tasks:
[INFO] [======================== ] 80.0% complete
[INFO] > building image to Docker daemon
...
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.google.cloud.tools:jib-maven-plugin:3.4.3:dockerBuild (default) on project application: The configured platforms don't match the Docker Engine's OS and architecture (linux/arm64)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:333)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
Caused by: org.apache.maven.plugin.MojoExecutionException: The configured platforms don't match the Docker Engine's OS and architecture (linux/arm64)
at com.google.cloud.tools.jib.maven.BuildDockerMojo.execute (BuildDockerMojo.java:167)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
Caused by: java.lang.IllegalStateException: The configured platforms don't match the Docker Engine's OS and architecture (linux/arm64)
at com.google.common.base.Preconditions.checkState (Preconditions.java:512)
at com.google.cloud.tools.jib.builder.steps.StepsRunner.lambda$loadDocker$18 (StepsRunner.java:628)
at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly (TrustedListenableFutureTask.java:131)
at com.google.common.util.concurrent.InterruptibleTask.run (InterruptibleTask.java:75)
at com.google.common.util.concurrent.TrustedListenableFutureTask.run (TrustedListenableFutureTask.java:82)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1144)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:642)
at java.lang.Thread.run (Thread.java:1583)
Plugin definition
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.4.3</version>
<configuration>
<from>
<image>[our privately built jib image for amd-64]</image>
<auth>
<username>${env.MAVEN_DEV_USERNAME}</username>
<password>${env.MAVEN_DEV_PASSWORD}</password>
</auth>
</from>
<to>
<image>[our service]:${docker.image.version}</image>
</to>
<container>
<creationTime>USE_CURRENT_TIMESTAMP</creationTime>
<ports>
<port>8080</port>
</ports>
<entrypoint>
[Our service entry point]
</entrypoint>
<user>64325:64325</user>
</container>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>dockerBuild</goal>
</goals>
</execution>
</executions>
</plugin>
The error I get:
The configured platforms don't match the Docker Engine's OS and architecture (linux/arm64)
Getting exactly the same problem running the gradle plugin on M3 for 3.4.3. After reverting to 3.4.2 things work again. Physically setting the platform (in from.platforms) does not help.
Same Issue here with 3.4.3, but on Ubuntu x86 with podman instead of docker: mvn jib:dockerBuild -Djib.dockerClient.executable=$(which podman)
. Works without issues in 3.4.2.
Thank you for the context, all, We're looking into reproducing this issue locally.
@hhedin Could I get a bit more information on the ostype and architecture of your local podman/docker environment? Through docker info -f '{{.OSType}} {{.Architecture}}'
(but the podman equivalent). The newly added check in 3.4.3 compares the platform of the image built to the os and architecture of the docker environment and throws an exception if those values don't match.
Additionally, @borisgob and @pierCo could we also get more information on the docker version you are currently using?
The result is: linux aarch64
Docker version 26.1.1, build 4cf5afa
This check is wrong and useless. The docker itself and the previous (3.4.2) version allow to build docker with different platform from the build machine. I don't see a reason to prevent it. You may show a warning, that this docker will not run on this machne.
We build docker on dev machine and push it to the testing environment based on linux with Intel processor.
@mpeddada1 Closest I can get is podman info -f '{{.Host.OS}} {{.Host.Arch}}'
resulting in: linux amd64
.
Like @borisgob I donΒ΄t really understand the purpose of this check. If there is a case to cover here that we don't understand, perhaps it could be opt-in or at least opt-out? This feels like a breaking change/added feature and would perhaps be better suited as a 3.5.x release and not 3.4.x in my opinion.
Requested info:
$ docker info -f '{{.OSType}} {{.Architecture}}'
linux aarch64
$ docker version
Client:
Cloud integration: v1.0.35+desktop.13
Version: 26.1.1
API version: 1.45
Go version: go1.21.9
Git commit: 4cf5afa
Built: Tue Apr 30 11:44:56 2024
OS/Arch: darwin/arm64
Context: desktop-linux
Server: Docker Desktop 4.30.0 (149282)
Engine:
Version: 26.1.1
API version: 1.45 (minimum version 1.24)
Go version: go1.21.9
Git commit: ac2de55
Built: Tue Apr 30 11:48:04 2024
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.6.31
GitCommit: e377cd56a71523140ca6ae87e30244719194a521
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Not just Mac, I cannot build my Amazon Linux based docker image on my Linux laptop anymore, same error. And works with 3.4.2 fails with 3.4.3
Execution failed for task ':jibDockerBuild'.
> com.google.cloud.tools.jib.plugins.common.BuildStepsExecutionException: The configured platforms don't match the Docker Engine's OS and architecture (/)
jib {
from {
image = 'amazoncorretto:21-al2-jdk'
}
β uname -a
Linux eli 6.8.9-300.fc40.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 2 18:59:06 UTC 2024 x86_64 GNU/Linux
β docker -v
podman version 5.0.2
@mpeddada1 , when do you expect the fix, when priority is P1?
@mpeddada1 why is this issue closed? The problem is still there (just tried to build on Mac using jib-maven-plugin 3.4.3).
@zasran the fix for this issue has been merged (#4268). I think github's feature of adding "Fixes ..." in the description automatically closes the connected issue.
It will be introduced in the upcoming release but we're working on addressing one more issue before going ahead with it. Until then, please continue using 3.4.2. We appreciate your patience on this!
Hi @mpeddada1 , 2 months pass already. Are you going to release this fix?
@mpeddada1, another month...
I'm fairly certain prodding maintainers in the comments, thereby sending out empty pings to all who watch the issue, is not going to speed up anything. ;)