首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mac M1芯片上的Docker映像构建失败

Mac M1芯片上的Docker映像构建失败
EN

Stack Overflow用户
提问于 2022-02-28 19:20:42
回答 3查看 5.4K关注 0票数 5

我试图在maven项目中构建一个简单的docker映像,将映像构建作为maven构建过程的一部分:

代码语言:javascript
复制
<build>
        <finalName>my-api</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- Docker -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.6</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                            <!-- <goal>push</goal> -->
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <repository>reponame/${project.name}</repository>
                    <tag>${project.version}</tag>
                    <skipDockerInfo>true</skipDockerInfo>
                </configuration>
            </plugin>

        </plugins>

    </build>
代码语言:javascript
复制
FROM openjdk:8-jdk-alpine
VOLUME /tmp
EXPOSE 8080
ADD target/*.jar app.jar
ENTRYPOINT [ "sh", "-c", "java -jar /app.jar" ]

但是它失败了,总是得到相同的错误跟踪,无论我使用哪个图像,错误仍然存在。

错误:

原因: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: java.lang.UnsatisfiedLinkError:未能加载FFI提供程序jnr.ffi.provider.jffi.Provider 原因: /private/var/folders/hz/rgppp8250rsdp86kf_tfjvqw0000gp/T/jffi8502916075702391528.dylib: dlopen(/private/var/folders/hz/rgppp8250rsdp86kf_tfjvqw0000gp/T/jffi8502916075702391528.dylib,:java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError 0x0001: java.lang.UnsatisfiedLinkError:'/private/var/folders/hz/rgppp8250rsdp86kf_tfjvqw0000gp/T/jffi8502916075702391528.dylib‘(fat文件,但缺少兼容的体系结构(有'i386,x86_64',需要’arm64e‘),’/usr/lib/ such 8502916075702391528.dylib‘(没有这样的文件)

其他我尝试过的图片:

  • openjdk:13-al菠萝3.9
  • openjdk:8-jre-al菠萝3.9
  • azul/zulu-openjdk-alpine:17.0.2-17.32.13-arm64

My java版本:openjdk版本"11.0.13“2021-10-19 LTS

My Docker版本:Docker版本20.10.11,构建dea9396

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-02-28 21:55:30

看起来dockerfile-maven-plugin使用基于x86架构的运行时,不会在苹果M1 (Arm)上运行。

这个插件现在是不活动的,所以您应该尝试其他的东西,例如8-maven-插件

代码语言:javascript
复制
          <plugin>
            <groupId>io.fabric8</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.38.1</version>
            <executions>
                <execution>
                    <id>build</id>
                    <phase>pre-integration-test</phase>
                    <goals>
                        <goal>build</goal>
                    </goals>
                </execution>
            </executions>
        </plugin> 
票数 8
EN

Stack Overflow用户

发布于 2022-09-12 05:27:31

我遇到了与错误消息相同的problem.According,它应该是与对接器daemon.It的连接错误,看起来插件不支持Arm套接字,您可以这样做:

(1)安装插座

代码语言:javascript
复制
brew install socat

(2)设置端口转发

代码语言:javascript
复制
socat TCP-LISTEN:2375,range=127.0.0.1/32,reuseaddr,fork UNIX-CLIENT:/var/run/docker.sock

(3)设置环境变量

代码语言:javascript
复制
export DOCKER_HOST=tcp://127.0.0.1:2375
票数 2
EN

Stack Overflow用户

发布于 2022-11-28 15:30:56

两个spotify码头maven插件都不再维护。他们需要将他们的依赖升级到支持aarch64的版本。

在我们的例子中,需要进行大量的重构,以制作8的插件或使用maven exec,所以我们希望继续使用spotify插件。

幸运的是,您可以通过向插件部分添加一个<dependencies>节来强制插件使用特定的依赖项。

代码语言:javascript
复制
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>1.4.6</version>
                    <dependencies>
                        <dependency>
                            <groupId>com.github.jnr</groupId>
                            <artifactId>jnr-unixsocket</artifactId>
                            <version>0.38.14</version>
                        </dependency>
                    </dependencies>
                </plugin>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71300031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档