尝试从我的java应用程序构建docker镜像:openjdk:20 linux/arm/v7 - 与清单中的平台不匹配

问题描述 投票:0回答:1

我正在尝试用我的 IntelliJ 构建一个 docker 镜像。 这是一个 Java (openjdk:20) 项目。我需要将映像作为 linux/arm/v7 在树莓派 2 上运行。 但是当我尝试构建图像时出现以下错误:错误:无法解决:openjdk:20:清单中与平台不匹配

当我运行 docker buildX ls 时,我发现我应该能够构建它:

NAME/NODE       DRIVER/ENDPOINT STATUS  BUILDKIT                              PLATFORMS
default         docker                                                        
  default       default         running v0.11.7-0.20230525183624-798ad6b0ce9f linux/arm64, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
desktop-linux * docker                                                        
  desktop-linux desktop-linux   running v0.11.7-0.20230525183624-798ad6b0ce9f linux/arm64, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6

我正在使用这个命令:

docker buildx build --platform linux/arm/v7 --tag testarmv7 .

我的 Dockerfile 如下所示:

FROM openjdk:20

ENV ENVIRONMENT=prod

LABEL maintainer="XXX"

EXPOSE 8080

ADD backend/target/capstone.jar app.jar

CMD [ "sh", "-c", "java -jar /app.jar" ]

我真的很感谢我能得到的任何帮助!

我尝试将jdk更改为17、11和8,但没有解决问题。

java docker armv7
1个回答
0
投票

我不是ARM专家,但我可以给你一些提示。

Docker Hub 上的

openjdk
存储库已弃用(请参阅弃用通知)。

openjdk:20
适用于
arm64/v8
,不适用于 32 位的
arm/v7
(请参阅本页)。它也有点旧和脆弱。

arm32v7/eclipse-temurin
有最新的图像,但它最高支持Java 17。你真的使用一些Java 20功能吗?

我还没有找到

arm/v7
的 Java 20 预构建镜像。

© www.soinside.com 2019 - 2024. All rights reserved.