docker - 如何在 Docker 内的 M1 (ARM) 上运行 ElasticSearch v6

标签 docker elasticsearch arm apple-m1

如何在 Docker 内的 M1 (ARM) 上运行 ElasticSearch v6?

ElasticSearch v6 不支持 ARM,也不是为 ARM 构建的

最佳答案

您可以在ARM镜像上安装ElasticSearch,并将JDK更改为支持ARM的JDK

FROM ubuntu:bionic-20220531

# Must be root to install the packages
USER root

# Install required deps
RUN apt update
RUN apt -y install gnupg wget apt-transport-https coreutils java-common

# Import Elasticsearch GPG Key
RUN wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -

# Add Elasticsearch 6.x APT repository
# setting CPU architecture to be amd64 explicity as in case this is being built from ARM (which it should) it would find the elasticsearch package (elasticsearch 6.x doesn't have ARM binary)  
RUN echo "deb [arch=amd64] https://artifacts.elastic.co/packages/6.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-6.x.list

# update after elastic-search repo added
RUN apt-get update

# Install ARM Amazon JDK
RUN wget https://corretto.aws/downloads/latest/amazon-corretto-8-aarch64-linux-jdk.deb -O amazon-jdk.deb
RUN dpkg --skip-same-version -i amazon-jdk.deb
RUN rm amazon-jdk.deb

# Install Elasticsearch 6.x
RUN apt-get -y install elasticsearch

# the user was created when installed the elasticsearch
# Must not be root:
# org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
USER elasticsearch

WORKDIR /usr/share/elasticsearch

# Append the custom conf

RUN echo "# ---------------------------------- CUSTOM -----------------------------------"                                    >> /etc/elasticsearch/elasticsearch.yml
RUN echo ""                                                                                                                   >> /etc/elasticsearch/elasticsearch.yml
RUN echo "# Added because of the following error (TL;DR: X-Pack features are not supported in ARM):"                          >> /etc/elasticsearch/elasticsearch.yml
RUN echo "# > org.elasticsearch.bootstrap.StartupException:"                                                                  >> /etc/elasticsearch/elasticsearch.yml
RUN echo "# >   ElasticsearchException[X-Pack is not supported and Machine Learning is not available for [linux-aarch64];"    >> /etc/elasticsearch/elasticsearch.yml
RUN echo "# >   you can use the other X-Pack features (unsupported) by setting xpack.ml.enabled: false in elasticsearch.yml]" >> /etc/elasticsearch/elasticsearch.yml
RUN echo "xpack.ml.enabled: false"                                                                                            >> /etc/elasticsearch/elasticsearch.yml
RUN echo ""                                                                                                                   >> /etc/elasticsearch/elasticsearch.yml
RUN echo "# Added because we want to listen to requests coming from computers in the network"                                 >> /etc/elasticsearch/elasticsearch.yml
RUN echo "network.host: 0.0.0.0"                                                                                              >> /etc/elasticsearch/elasticsearch.yml


ENTRYPOINT [ "./bin/elasticsearch" ]

Link to GitHub Gist

关于docker - 如何在 Docker 内的 M1 (ARM) 上运行 ElasticSearch v6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72717414/

相关文章:

elasticsearch - Fluentd似乎正在工作,但是在Kibana中没有日志

linux - 将附加代码合并到可执行文件中 (arm-linux)

arm - ARM ABI 和 EABI 的目的是什么?

docker - 如何暴露 docker 容器端口并从 postman 调用?

elasticsearch - Elasticsearch查询以匹配同一嵌套字段的不同值

postgresql - 连接到 docker postgres 实例 : "The server encountered an internal error and was unable to complete your request." 时出现 pgadmin 错误

php - Elasticsearch:在字符串中搜索单词并获得分数的最佳方法是什么?

c - Neon 内在功能是通过从所有元素中减去最小元素来防止溢出[无循环]

docker - 如何动态设置链接容器的环境变量?

docker - 无法更新 Kubernetes 中 StatefulSet 的镜像