python - 无法从docker容器连接到本地elasticsearch进程

标签 python docker elasticsearch

编辑

我认为发生的事情是docker进程内的localhost指的是容器自己的localhost,而不是我系统的localhost。那么,如何确保当运行容器的应用程序尝试连接到容器的 localhost:9200 时,它实际上连接到我系统的 localhost:9200?

当我访问 localhost:9200 时,我的 ES 应用程序似乎正在运行。在 Chrome 中看起来像这样:

{
  "name" : "H1YDvcg",
  "cluster_name" : "elasticsearch_jwan",
  "cluster_uuid" : "aAorzRYTQPOI0j_OgMGKpA",
  "version" : {
    "number" : "6.8.1",
    "build_flavor" : "oss",
    "build_type" : "tar",
    "build_hash" : "1fad4e1",
    "build_date" : "2019-06-18T13:16:52.517138Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

我在终端窗口中运行 ES,它在运行命令 elasticsearch 后运行。

我正在使用以下命令运行 Docker 容器:

docker run -e DATALOADER_QUEUE='<some aws SQS queue name'\
             -e ES_HOST='localhost'\
             -e ES_PORT='9200'\
             -e AWS_ACCESS_KEY_ID='<somekey>'\
             -e AWS_SECRET_ACCESS_KEY='<somekey>'\
             -e AWS_DEFAULT_REGION='us-west-2'\
             <application name>

我收到此错误:

requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=9200): Max retries exceeded with url: /person/_search (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f36e4189c90>

有人知道这是怎么回事吗?我不明白为什么它无法连接到 ES,即使 ti 似乎在 localhost:9200 上运行。

最佳答案

解决方案是使用host.docker.internal在 ES 主机设置中。

我刚刚使用了es_client = Elasticsearch(host=_es_host,其中 es_host = host.docker.internal并确保在本地使用 http 而不是 https。

关于python - 无法从docker容器连接到本地elasticsearch进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080070/

相关文章:

elasticsearch - 如何确定Elasticsearch中每个索引使用的RAM?

python - 使用python进行Excel列比较并设置颜色格式

jquery - 网络驱动程序异常 : Message: unknown error: jQuery is not defined error in robot framework

python - Numpy 数组变量避免错误计算

windows - 我可以从 CLI 针对远程守护进程构建 Docker 容器吗?

docker - 如何记录对elasticsearch容器进行的所有查询?

elasticsearch - Log4net RemoteSyslogAppender 将 <14> 添加到所有消息

python - 监控程序崩溃

security - 通过 mitmproxy 运行 docker 容器

elasticsearch - NEST Elasticsearch GeoPoint类