首页 > 解决方案 > 在 Dockerfile 中的 ElasticSearch 上安装插件失败并出现 SSL 错误

问题描述

这是我使用的 Dockerfile:

FROM docker.elastic.co/elasticsearch/elasticsearch-oss:7.9.3

ENV ES_PATH=/usr/share/elasticsearch

USER root

RUN $ES_PATH/bin/elasticsearch-plugin install analysis-icu \
    && $ES_PATH/bin/elasticsearch-plugin install analysis-kuromoji \
    && $ES_PATH/bin/elasticsearch-plugin install analysis-smartcn \
    && $ES_PATH/bin/elasticsearch-plugin install analysis-stempel

USER elasticsearch

EXPOSE 9200 9300

当我尝试使用它构建它时,docker image build -t elasticsearch:7.9.3-custom .出现此错误:

$ docker image build -t elasticsearch:7.9.3-liferay .
Sending build context to Docker daemon  2.048kB
Step 1/6 : FROM docker.elastic.co/elasticsearch/elasticsearch-oss:7.9.3
 ---> 8ac9cec94278
Step 2/6 : ENV ES_PATH=/usr/share/elasticsearch
 ---> Using cache
 ---> 7e546ac6cbe6
Step 3/6 : USER root
 ---> Using cache
 ---> 6a5b7b716ae7
Step 4/6 : RUN $ES_PATH/bin/elasticsearch-plugin install analysis-icu     && $ES_PATH/bin/elasticsearch-plugin install analysis-kuromoji     && $ES_PATH/bin/elasticsearch-plugin install analysis-smartcn     && $ES_PATH/bin/elasticsearch-plugin install analysis-stempel
 ---> Running in 3722c6026f45
-> Installing analysis-icu
-> Failed installing analysis-icu
-> Rolling back analysis-icu
-> Rolled back analysis-icu
Exception in thread "main" javax.net.ssl.SSLHandshakeException: Remote host terminated the handshake
        at java.base/sun.security.ssl.SSLSocketImpl.handleEOF(SSLSocketImpl.java:1687)
        at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1496)
        at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1394)
        at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:441)
        at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:412)
        at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567)
        at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:183)
        at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:142)
        at org.elasticsearch.plugins.InstallPluginCommand.urlExists(InstallPluginCommand.java:418)
        at org.elasticsearch.plugins.InstallPluginCommand.getElasticUrl(InstallPluginCommand.java:374)
        at org.elasticsearch.plugins.InstallPluginCommand.download(InstallPluginCommand.java:305)
        at org.elasticsearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:251)
        at org.elasticsearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:224)
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
        at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:91)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
        at org.elasticsearch.cli.Command.main(Command.java:90)
        at org.elasticsearch.plugins.PluginCli.main(PluginCli.java:47)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
        at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:474)
        at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:463)
        at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160)
        at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:110)
        at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1488)
        ... 17 more

它似乎与某种 SSL 问题有关,但我不知道该做什么以及在哪里。这是一个 Docker 问题吗?环境问题?代理/防火墙问题?

你知道发生了什么以及如何解决它吗?

环境是 CentOS 7,Docker 18.09.7。

标签: dockerelasticsearchssl

解决方案


推荐阅读