繁体   English   中英

Docker:无法连接到弹性搜索表单Spring Boot Docker映像

[英]Docker: Unable to connect to elastic search form spring boot docker image

Dockerized Spring Boot App无法连接到在默认地址和端口本地运行的Elastic Search服务器。 引发以下异常:

2018-01-20 07:10:38.529  INFO 1 --- [           main] org.elasticsearch.client.transport       : [Gemini] failed to connect to node [{#transport#-1}{localhost}{127.0.0.1:9300}], removed from nodes list

org.elasticsearch.transport.ConnectTransportException: [][127.0.0.1:9300] connect_timeout[30s]
    at org.elasticsearch.transport.netty.NettyTransport.connectToChannelsLight(NettyTransport.java:967) ~[elasticsearch-2.4.6.jar!/:2.4.6]
    at org.elasticsearch.transport.netty.NettyTransport.connectToNode(NettyTransport.java:933) ~[elasticsearch-2.4.6.jar!/:2.4.6]
    at org.elasticsearch.transport.netty.NettyTransport.connectToNodeLight(NettyTransport.java:906) ~[elasticsearch-2.4.6.jar!/:2.4.6]
    at org.elasticsearch.transport.TransportService.connectToNodeLight(TransportService.java:267) ~[elasticsearch-2.4.6.jar!/:2.4.6]
    at org.elasticsearch.client.transport.TransportClientNodesService$SimpleNodeSampler.doSample(TransportClientNodesService.java:390) ~[elasticsearch-2.4.6.jar!/:2.4.6]

Docker文件:

FROM openjdk:8
ADD target/CryptoAPI-1.0.0.jar CryptoAPI.jar
EXPOSE 80
ENTRYPOINT ["java", "-jar", "CryptoAPI.jar"]

Docker命令运行镜像:

docker run --net=host cryptoapi

如果您在Docker容器中访问127.0.0.1它会尝试与其自身连接(在您的情况下,具有Spring Boot的容器会尝试访问其9300端口)。 容器对周围环境一无所知,这是码头工人的核心原则。

有一些解决方法,请参阅docker论坛上的线程 但是一般的想法是,您不应该尝试从容器内访问主机。

正确的方法是在容器内开始弹性搜索,建立docker网络并通过其名称(docker网络内的域名)在两个容器之间进行通信。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM