ElasticSearch适用于arm64平台的Dockerfile


Update

官方的Dockerfile在3月24日增加了对arm64平台的支持,可以直接拉取官方的dockerfile在64位的树莓派上docker build了:


在树莓派上安装ElasticSearch时, 我本想通过docker快速安装,发现在arm平台没有官方的ElasticSearch的镜像。而其他的个人制作的镜像来路不明,版本落后,很久不更新。还是得自己动手,才能丰衣足食。

修改

在github上找到官方的dockerfile: ElasticSearch Dockerfile, clone到本地做一些修改,使之适配arm平台,主要的修改点如下:

  1. 基础镜像由centos更改为debian, 由此构建出的镜像体积更小一点了。为什么不用alpine?因为apline中的musl libc与java依赖的标准的glibc并不兼容, 所以无法从官方的apline镜像中顺利的构建,用debian就没那么麻烦了。

  2. 将ElasticSearch中自带的jdk替换为适用于arm64平台的OpenJDK13U-jdk_aarch64_linux,版本与自带的保持一致,为AdoptOpenJDK13.0.1_9。官方下载的ElasticSearch无法在arm平台运行的根本原因在于它自带的jdk仅能运行在amd64平台,将它替换为能运行在arm64平台的jdk就行了。

  3. ElasticSearch的配置文件增加以下配置:

1
xpack.ml.enabled: false

arm平台不支持xpack的机器学习,不增加这一行配置会出错导致无法运行。

构建

完整的最新版(7.5)ElasticSearch的arm64平台的Dockerfile:elasticsearch-docker-arm64

构建方法:

1
2
3
git clone https://github.com/hsxsix/elasticsearch-docker-arm64.git
cd elasticsearch-docker-arm64/7.5
docker build -t elasticsearch .