gpt4 book ai didi

java - Docker:无法从 Spring Boot docker 镜像连接到 Elasticsearch

转载 作者:行者123 更新时间:2023-12-02 11:43:49 26 4
gpt4 key购买 nike

Dockerized Spring Boot 应用程序无法连接到在默认地址和端口本地运行的 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 的核心原则。

有一些解决方法,请参阅此 thread on docker forum 。但一般的想法是,您不应该尝试从容器内访问主机。

正确的方法是在容器内启动elasticsearch,建立docker网络,并通过两个容器的名称(docker网络内的域名)在两个容器之间进行通信。

关于java - Docker:无法从 Spring Boot docker 镜像连接到 Elasticsearch ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48353674/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com