gpt4 book ai didi

java - 如何构建启动 .jar 并在 RaspberryPi 4B 上运行的 Docker 容器?

转载 作者:行者123 更新时间:2023-12-04 13:09:34 29 4
gpt4 key购买 nike

我正在开发一个小应用程序,我想在 Raspberry Pi(型号 4B,32 位,4GB RAM)上的 docker 容器中运行该应用程序。我目前正在学习 Docker,到目前为止我只在我的开发机器(mac)上构建和运行了一些东西。容器设置和 jar 在该机器上没有问题。
这是我非常基本的 Dockerfile:

FROM java:8
WORKDIR /
ADD my_jar.jar my_jar.jar
EXPOSE 8080
CMD java -jar my_jar.jar
如您所见,没有太多事情发生。我只想能够 Docker build . -t myDockerImage在 pi 上,然后运行我的容器。根据输出,构建成功,但运行失败并出现错误:
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm/v7) and no specific platform was requested
standard_init_linux.go:219: exec user process caused: exec format error
我做了一些研究,我能找到的只是使用 OpenJDK 的建议。这样做了,但无法构建,它说:
no matching manifest for linux/arm/v7 in the manifest list entries
我在 Docker Hub 上环顾四周,但似乎没有适合这种架构的 java 图像。或者我不知道该找什么...?
那么我如何在这台机器上的 docker 容器中获取 java(最好以一种相当简单、方便的方式,但如果它不存在,我很乐意以艰难的方式做到这一点,这可能会带来什么)?
顺便说一句:这就是 lshw关于 RPi 的说明:
raspberrypi
description: ARMv7 Processor rev 3 (v7l)
product: Raspberry Pi 4 Model B Rev 1.1
serial: 10000000b3320840
width: 32 bits
capabilities: smp

最佳答案

问题是 JRE 仍然依赖于操作系统,而这取决于平台架构。 Java 的标准 docker 镜像很可能会使用安装了适当 JDK 的基于 amd64/x64 的 Linux 操作系统。
但是,Raspberry PI 使用 ARM 架构,因此输出 ARMv7 Processor rev 3 (v7l) .
因此,您需要一个兼容 ARM 的镜像,例如其中之一:https://hub.docker.com/r/arm32v7/adoptopenjdk
我不确定 ARM v7 和 v8 的兼容性如何,所以我建议您坚持使用 v7 镜像:)

关于java - 如何构建启动 .jar 并在 RaspberryPi 4B 上运行的 Docker 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67022380/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com