【发布时间】:2019-11-26 12:52:45
【问题描述】:
编辑
我认为是 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>
有人知道怎么回事吗?我不明白为什么即使 ti 似乎在 localhost:9200 上运行它也无法连接到 ES。
【问题讨论】:
标签: python docker elasticsearch