rnk*_*rnk 5 python elasticsearch docker docker-compose
我正在使用docker-composeLinode服务器中运行python flask app和elasticsearch服务.
这是我的docker-compose.yml
version: '2'
services:
elasticsearch:
build: config/elastic/
ports:
- "9200:9200"
- "9300:9300"
environment:
ES_JAVA_OPTS: "-Xms1g -Xmx1g"
networks:
- docker_lr
web:
build: .
ports:
- "8000:8000"
networks:
- docker_lr
depends_on:
- elasticsearch
networks:
docker_lr:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
这是elasticsearch Dockerfile
FROM elasticsearch:5
ENV ES_JAVA_OPTS="-Des.path.conf=/etc/elasticsearch"
CMD ["-E", "network.host=0.0.0.0", "-E", "discovery.zen.minimum_master_nodes=1"]
Run Code Online (Sandbox Code Playgroud)
这是用于web 的Dockerfile https://github.com/mysticmode/LibreRead/blob/master/Dockerfile
这两个服务都在运行,我可以使用my:8000和9200在浏览器中查看
但我无法从我的python应用程序代码连接到:9200的elasticsearch.
r = requests.get('http://localhost:9200/lr_index/book_info/_search', data=payload)
Run Code Online (Sandbox Code Playgroud)
它显示此错误
ConnectionError: HTTPConnectionPool(host='localhost', port=9200): Max retries exceeded with url: /lr_index/book_info/_search (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f5b13872250>: Failed to establish a new connection: [Errno 111] Connection refused',))
Run Code Online (Sandbox Code Playgroud)
有人可以指导我吗?谢谢!
试试这个:
r = requests.get('http://elasticsearch:9200/lr_index/book_info/_search', data=payload)
Run Code Online (Sandbox Code Playgroud)
你正在容器中运行python代码web吗?localhost指的是同一容器的loopback接口.
使用userdefined networks实现DNS了在同一网络中的容器.这就是为什么你可以elasticsearch通过它的名字来调用容器.
| 归档时间: |
|
| 查看次数: |
4026 次 |
| 最近记录: |