本文参考:https://blog.csdn.net/boling_cavalry/article/details/101855126,感谢提供思路
多的不说,情况大家都知道常规开发都是基于64位cpu,在树莓派直接docker pull java:8,实际上在运行的时候报错不能正常运行,因为咱们的cpu是arm架构的,要想成功运行,必须要准备能在本arm电脑上正常运行的jdk版本,同时再编译成docker镜像。
——树莓派4b官方镜像是32位系统,我的pi4硬件是4核4G。树莓派3b2G版本按常理应该也可以按本文进行验证,操作结果欢迎留言。
环境信息
树莓派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
实际上各位要注意自己的系统是什么版本,如:stretch还是buster等;
同时,各位的网络不一定可以顺利拉取这个镜像,毕竟200多Mb的数据在网络不稳的情况下,很容易超时导致失败。
所以此处补充一下如何在本机编译 buildpack-deps镜像:
git clone https://github.com/docker-library/buildpack-deps.git
cd buildpack-deps/debian/stretch
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
# 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编译完成,欢迎讨论