无法在Elasticsearch 7 Windows Docker容器上设置JAVA_HOME

时间:2019-06-14 08:24:49

标签: powershell docker elasticsearch java-11

我没有找到Windows的任何Elasticsearch Docker映像。我试图在此基础上构建自己的jdk11图像和elasticsearch 7.1.1。问题在于,在elasticsearch 7.1.1中,JAVA_HOME是在elasticsearch.bat中设置的,因此它会覆盖jdk图像的JAVA_HOME。

我的jdk11 Dockerfile看起来像这样:

FROM  mcr.microsoft.com/powershell:nanoserver
SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop';"]

COPY /jdk-11.0.3_windows-x64_bin.zip jdk.zip

ENV JAVA_HOME=C:\\jdk-11 \
       PATH=C:\\jdk-11\\bin;C:\\windows\\system32${PATH}

RUN       Expand-Archive -Path c:/jdk.zip -DestinationPath c:/ ;\
      Remove-Item c:/jdk.zip -Force   

我的elasticsearch 7.1.1 dockerfile看起来像这样:

FROM jdk11:forelastic

SHELL ["pwsh", "-Command", "$ErrorActionPreference = 'Stop';"]

COPY /elasticsearch-7.1.1-windows-x86_64.zip c:\\elasticsearch.zip

RUN Expand-Archive -Path c:/elasticsearch.zip -DestinationPath c:/ ;\
        Rename-Item c:/elasticsearch-7.1.1 c:/elasticsearch ;\
        Remove-Item c:/elasticsearch.zip -Force ;\
        New-Item -Path c:/temp -ItemType "directory"

SHELL ["cmd", "/S", "/C"]

ENV ES_PATH_CONF='c:\\\\elasticsearch\\\\config' 

RUN del c:\elasticsearch\config /F /S /Q 

WORKDIR c:/elasticsearch/bin

CMD ["cmd",  "/C","elasticsearch.bat"]



图像已构建。当我尝试运行elasticsearch容器时,出现以下消息:

  

“在JAVA_HOME中找不到Java或在C:\ elasticsearch \ jdk中捆绑了它”

我仔细研究了elasticsearc 7.1.1 elasticsearch.bat,最后我找到了以下命令:

%JAVA% %ES_JAVA_OPTS% -Delasticsearch -Des.path.home="%ES_HOME%" -Des.path.conf="%ES_PATH_CONF%" -Des.distribution.flavor="%ES_DISTRIBUTION_FLAVOR%" -Des.distribution.type="%ES_DISTRIBUTION_TYPE%" -Des.bundled_jd="%ES_BUNDLED_JDK%" -cp "%ES_CLASSPATH%" "org.elasticsearch.bootstrap.Elasticsearch" !newparams!

我应该使用修改后的elasticsearch.bat来构建Elasticsearch图像,还是还有更优美的路要走?

PS:我正在Windows 10(1809)中运行它们。 Windows 10 did not support it的较早发行版,但已通过符号链接上的修复程序进行了修复。

0 个答案:

没有答案