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

标签 docker elasticsearch dropwizard

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

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

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 镜像-p 8080:8080 -p 8081:8081 testapp

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

最佳答案

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

请看一下docker联网,如何按名称链接两个容器。我建议您在本地计算机上检查docker-compose以获得多容器设置。

可行的方法(但不是很好的做法)是将dropwizard容器的机器ip传递给Elasticsearch主机,因为您创建了从主机到Elasticsearch容器的端口映射。但是最好看看compose如何做到这一点。

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

关于docker - 使用Dropwizard访问Elasticsearch Docker-拒绝连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49039092/

相关文章:

json - Elasticsearch中的删除字段

elasticsearch - 如何编写脚本字段以获取状态转换之间的天数

elasticsearch - 如何在ElasticSearch中过滤嵌套聚合?

java - Dropwizard 具有 DynamicFeature 的自定义授权过滤器

java - 跳过 Maven 部署一个模块

ruby-on-rails - dotenv 是否会覆盖 docker compose 设置的环境变量?

java - 使用docker和java spring时keycloak认证问题

postgresql - docker-entrypoint-initdb.d 中的 Docker PostgreSQL 初始化脚本无法导入文件

java - Hibernate 要求 javax.validation.constraints.Size 进行枚举

java - Dropwizard 多个 Rest API 版本