【发布时间】:2022-11-29 00:11:17
【问题描述】:
我正在尝试在 maven 项目中构建一个简单的 docker 图像,将图像构建添加为 maven 构建过程的一部分:
<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>
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
引起:java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: /private/var/folders/hz/rgppp8250rsdp86kf_tfjvqw0000gp/T/jffi8502916075702391528.dylib: dlopen(/private/var/folders/hz/rgppp8250rsdp86kf_tfjvqw0000gp/T/jffi8502916075702391528.dylib, 0x0001):试过: '/private/var/folders/hz/rgppp8250rsdp86kf_tfjvqw0000gp/T/jffi8502916075702391528.dylib' (胖文件,但缺少兼容的体系结构(有'i386,x86_64', 需要 'arm64e')), '/usr/lib/jffi8502916075702391528.dylib' (没有这样的 文件)
我试过的其他图片:
- openjdk:13-alpine3.9
- openjdk:8-jre-alpine3.9
- azul/zulu-openjdk-alpine:17.0.2-17.32.13-arm64
我的java版本: openjdk 版本“11.0.13” 2021-10-19 LTS
我的 Docker 版本: Docker 版本 20.10.11,构建 dea9396
提前致谢。
【问题讨论】:
-
日志中显示的 Spotify docker 客户端是什么?你在使用某种 Maven/Gradle 插件吗?如果您使用
docker build命令构建会发生什么? -
我正在使用 dockerfile-maven-plugin 并将图像构建作为 mvn 执行的一部分,运行 docker build 命令。