使用 Dropwizard 访问 Elasticsearch Docker - 连接被拒绝
Accessing Elasticsearch Docker with Dropwizard - Connection Refused
简而言之 - 我可以 运行 Elasticsearch 和 Dropwizard 应用程序在单独的 docker 容器中并允许它们相互看到吗?
我运行正在使用 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 testapp
过去有没有其他人遇到过类似问题或解决过这个问题?
我假设它 'network' 相关并且从一个 docker 图像连接到本地主机不会映射到另一个 docker 图像
您面临的问题出在您传递给 dropwizard 容器的 url 中。由于默认情况下容器有自己的网络,值 localhost
表示 dropwizard 容器本身,而不是您从容器外部看到的本地主机。
请查看 docker 网络,如何通过名称 link 两个容器。我建议检查 docker-compose 在本地机器上的 multi-container 设置。
将您机器的 ip 作为 elasticsearch 主机传递给 dropwizard 容器也是可行的(但不是好的做法),因为您创建了从主机到 elasticsearch 容器的端口映射。但最好看看 compose 应该如何完成。
有关如何使用 compose 的详细信息,请查看 。
简而言之 - 我可以 运行 Elasticsearch 和 Dropwizard 应用程序在单独的 docker 容器中并允许它们相互看到吗?
我运行正在使用 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 testapp
过去有没有其他人遇到过类似问题或解决过这个问题? 我假设它 'network' 相关并且从一个 docker 图像连接到本地主机不会映射到另一个 docker 图像
您面临的问题出在您传递给 dropwizard 容器的 url 中。由于默认情况下容器有自己的网络,值 localhost
表示 dropwizard 容器本身,而不是您从容器外部看到的本地主机。
请查看 docker 网络,如何通过名称 link 两个容器。我建议检查 docker-compose 在本地机器上的 multi-container 设置。
将您机器的 ip 作为 elasticsearch 主机传递给 dropwizard 容器也是可行的(但不是好的做法),因为您创建了从主机到 elasticsearch 容器的端口映射。但最好看看 compose 应该如何完成。
有关如何使用 compose 的详细信息,请查看