我正在使用Angular.js 2,Elasticsearch和Docker构建Web应用程序。
我尝试使用链接的网址" http://search:9200/_cat/health"从我的Angular应用程序通过其REST API访问Elasticsearch,但我获得了{{1}错误。
奇怪的是,当我从网络应用程序的容器中做GET http://search:9200/_cat/health net::ERR_NAME_NOT_RESOLVED
时,一切都很好,我得到了正确的答案。
以下是我各自的curl -XGET "http://search:9200/_cat/health"
文件
docker-compose.yml
此处也是对弹性搜索服务的调用
version: '2'
services:
search:
image: elasticsearch:latest
command: elasticsearch -Des.network.host=0.0.0.0
ports:
- "9200:9200"
- "9300:9300"
web:
build: .
command: npm start
volumes:
- .:/visfx
ports:
- "3000:3000"
links:
- search
答案 0 :(得分:4)
如果javascript在客户端运行,则必须使用真实的DNS名称路由到docker主机,因为docker的名称只能使用docker的内部解析器来解析。