本文参考:https://blog.csdn.net/boling_cavalry/article/details/101855126,感谢提供思路

多的不说,情况大家都知道常规Java开发都是基于64位cpu。如果要在docker上运行jar项目,编译镜像大都from java:8。

实际上却不能在树莓派上如愿运行,因为PI的cpu是arm架构的,要想成功运行,必须准备arm电脑上正常运行的jdk版本,编译成docker镜像。

本文提到的树莓派4b使用官方镜像32位系统,树莓派3b逻辑上应该也可按本文进行重现,各位欢迎大佬留言。

环境信息

  • 树莓派4b 4核4G版本
  • 系统Linux raspberrypi4 4.19.97-v7l+ #1294  【buster】
  • Docker version 19.03.6, build 369ce74

参考文档

https://blog.csdn.net/boling_cavalry/article/details/101855126

软件准备

  • xshell
  • jdk-8u241-linux-arm32-vfp-hflt.tar.gz   【其他版本各位自行选择,注意arm32】

环境准备

  • 系统基础包:buildpack-deps

注意:参考文档说用docker pull拉取镜像:docker pull buildpack-deps:stretch-scm

如果是buster,则使用命令:docker pull buildpack-deps:buster-scm

实际上各位要注意自己的系统是什么版本,如:stretch还是buster等;

同时,各位的网络不一定可以顺利拉取这个镜像,毕竟200多Mb的数据在网络不稳的情况下,很容易超时导致失败。

所以此处补充一下如何在本机编译 buildpack-deps镜像:

git clone https://github.com/docker-library/buildpack-deps.git
cd buildpack-deps/debian/buster
docker build -t buildpack-deps:buster .

此操作会要耗时数分钟,取决于自己的机器性能,耐心等待即可,成功后使用docker images可以查看到镜像。

  • Dockerfile
#Docker image of JDK8 in ARM32
# VERSION 8
# Author: nicolas

FROM buildpack-deps:buster-scm

MAINTAINER nicolas <mmxiutu@gmail.com>

# Default to UTF-8 file.encoding
ENV LANG C.UTF-8

ENV JAVA_HOME /usr/local/jdk8

ENV PATH $JAVA_HOME/bin:$PATH

ENV JDK_FILE jdk-8u241-linux-arm32-vfp-hflt.tar.gz

COPY $JDK_FILE /usr/local/

RUN mkdir -p "$JAVA_HOME"; \
    tar --extract \
		--file /usr/local/$JDK_FILE \
		--directory "$JAVA_HOME" \
		--strip-components 1 \
		--no-same-owner; \
    rm /usr/local/$JDK_FILE

以上参数请不要完全照抄,注意修改from镜像。

执行编译命令编译镜像:docker build -t xxx/arm32jdk:8 .

查看镜像后,执行测试命令:docker run --rm xxx/arm32jdk:8 java -version

>> docker build -t cha1024/arm32jdk:8 .



>> docker images

REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
cha1024/arm32jdk              8                   c7d0e26382dd        19 minutes ago      493MB
buildpack-deps                buster-scm          066228d85836        5 weeks ago         242MB



>> docker run --rm cha1024/arm32jdk:8 java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) Server VM (build 25.241-b07, mixed mode)

 至此,arm32的jdk编译完成,欢迎讨论

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐