使用Dropwizard访问Elasticsearch Docker - 拒绝连接

问题描述 投票:0回答:1

简而言之 - 我可以在单独的docker容器中运行Elasticsearch&Dropwizard应用程序并允许它们相互查看吗?

我从Docker运行Elasticsearch 6.2.2(在mac上)。使用命令..

docker run -p 9200:9200 -p 9300:9300 -e "network.host=0.0.0.0" \ 
-e "http.port=9200"  -e "discovery.type=single-node" \
docker.elastic.co/elasticsearch/elasticsearch:6.2.2

我可以直接在Mac上使用Postman访问Elasticsearch(POST和GET)

localhost:9200/testindex/_search

但是,当从访问docker Elasticsearch实例的其他docker镜像运行Dropwizard应用程序时,我使用相同的主机和端口(localhost 9200)拒绝连接。

当直接从IDE运行Dropwizard应用程序时,我没有任何问题,只有当它从docker镜像运行并从另一个图像访问ES时。

docker image -p 8080:8080 -p 8081:8081测试应用

有没有其他人有类似的问题或过去解决过这个问题?我假设它与'网络'相关,并且从一个docker镜像连接到localhost将不会映射到另一个docker镜像

docker elasticsearch dropwizard
1个回答
1
投票

您遇到的问题是您传递给dropwizard容器的URL。由于默认情况下容器具有自己的网络,因此值localhost表示dropwizard容器本身,而不是您从容器外部看到的本地主机。

请查看docker网络,如何按名称链接两个容器。我建议在本地机器上查看docker-compose进行多容器设置。

什么也可行(但不是很好的做法)是将dropwizard容器作为elasticsearch主机传递给你的机器的ip,因为你创建了一个从主机到elasticsearch容器的端口映射。但最好还是看看compose做它应该做的事情。

有关如何使用compose的详细信息,请查看this answer with a similar example

© www.soinside.com 2019 - 2024. All rights reserved.