Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Docker:无法连接到弹性搜索表单spring boot Docker映像_Java_Docker_Spring Boot_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Dockerfile - Fatal编程技术网 elasticsearch,dockerfile,Java,Docker,Spring Boot,elasticsearch,Dockerfile" /> elasticsearch,dockerfile,Java,Docker,Spring Boot,elasticsearch,Dockerfile" />

Java Docker:无法连接到弹性搜索表单spring boot Docker映像

Java Docker:无法连接到弹性搜索表单spring boot Docker映像,java,docker,spring-boot,elasticsearch,dockerfile,Java,Docker,Spring Boot,elasticsearch,Dockerfile,停靠的Spring Boot应用程序无法连接到以默认地址和端口在本地运行的弹性搜索服务器。引发以下异常: 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

停靠的Spring Boot应用程序无法连接到以默认地址和端口在本地运行的弹性搜索服务器。引发以下异常:

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端口)。容器不知道也不应该知道周围环境的任何信息——这是dockers的核心原则

有一些变通办法,请看这个。但一般的想法是,您不应该试图从容器中访问主机


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

你的弹性搜索配置是什么样的?似乎您在yml中没有正确绑定主机。所以您的ES正在主机上运行?或者在docker容器上?指向容器中的127.0.0.1将不会指向主机上的本地主机,而是指向sprint容器中的本地主机。它找不到ES。谢谢。我能够使用网桥网络将它们连接起来。