我正在尝试用我的 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,但没有解决问题。
我不是ARM专家,但我可以给你一些提示。
Docker Hub 上的
openjdk
存储库已弃用(请参阅弃用通知)。
openjdk:20
适用于 arm64/v8
,不适用于 32 位的 arm/v7
(请参阅本页)。它也有点旧和脆弱。
arm32v7/eclipse-temurin
有最新的图像,但它最高支持Java 17。你真的使用一些Java 20功能吗?
我还没有找到
arm/v7
的 Java 20 预构建镜像。