Installing plugin on ElasticSearch within Dockerfile fails with SSL error

Viewed 637

Here is the Dockerfile I use :

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

When I try to build it using docker image build -t elasticsearch:7.9.3-custom . I get this error:

$ 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

It seems to be related to some kind of SSL issue but I don't see what to do and where. Is this a Docker issue? An environment issue? A proxy/firewall issue?

Do you have any idea of what's going on and what to do to fix it?

The env is CentOS 7, Docker 18.09.7.

0 Answers
Related