完美解决ARM32架构下的Docker环境,OpenJDK官方没有8版本镜像,树莓派4b逐步操作示例
本文参考:https://blog.csdn.net/boling_cavalry/article/details/101855126,感谢提供思路多的不说,情况大家都知道常规开发都是基于64位cpu,在树莓派直接docker pull java:8,实际上在运行的时候报错不能正常运行,因为咱们的cpu是arm架构的,要想成功运行,必须要准备能在本arm电脑上正常运行的jdk版本,同时再编译成do
本文参考: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编译完成,欢迎讨论
更多推荐
所有评论(0)