【发布时间】:2018-06-29 10:29:05
【问题描述】:
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
【问题讨论】:
-
您的 Elasticsearch 配置是什么样的?几乎看起来你没有在 yml 中正确绑定你的主机。
-
那么你的 ES 是在主机上运行的吗?还是在 docker 容器上?
-
指向容器内的 127.0.0.1 不会指向主机上的本地主机,而是指向 sprint 容器内的本地主机。找不到 ES。
标签: java docker spring-boot elasticsearch dockerfile