在Docker环境中使用Consul DNS的Http请求

我有一个非常简单的领事和注册人在我的机器上组织运行。 我可以查询在领事登记的服务列表,但我不能使用http打电话给其他服务。

docker构成:

version: '2.1' services: consul: image: gliderlabs/consul:latest command: "agent -server -data-dir /tmp/consul -bootstrap -ui -client=0.0.0.0" ports: - 8500:8500 - 8600:8600 - 8400:8400 networks: app_net: ipv4_address: 172.28.0.10 registrator: image: gliderlabs/registrator:latest command: "consul://consul:8500" depends_on: - consul volumes: - /var/run/docker.sock:/tmp/docker.sock networks: - app_net service1: image: solive/service1 ports: - 3000 depends_on: - consul - registrator networks: - app_net service2: image: solive/service2 ports: - 4000 depends_on: - consul - registrator networks: - app_net networks: app_net: ipam: driver: default config: - subnet: 172.28.0.0/16 

我试图使用axios,但它听起来像它不使用configuration的DNS。 我再次设法得到我的服务清单。 所以我可以注册一个服务,我可以使用consul.agent来获取服务,DNSparsing也可以。 但获取电话不起作用。 我得到ENOTFOUND

 const request = require('request'); var dns = require('dns'); var consul = require('consul')( { host: '172.28.0.10', port: '8500' } ); dns.setServers(['172.28.0.10:8600']); dns.resolveSrv("service1.service.consul", function(err, records){ console.log("\nDNS SRV query"); if(err){ console.log(err); }else{ console.log(records); } }); request('http://service1.service.consul', { json: true }, (err, res, body) => { if (err) { return console.log(err); } console.log(body.url); console.log(body.explanation); });