在Docker环境中使用Consul DNS的HTTP请求
我有一个非常简单的领事和注册员在我的机器上组成runnning。 我可以查询在领事注册的服务列表,但我无法使用http拨打其他服务。在Docker环境中使用Consul DNS的HTTP请求
泊坞窗 - 撰写:
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
我试图用爱可信,但它听起来像它不使用配置的DNS。 我再次获得了我的服务列表。所以我可以注册一个服务,我可以使用consul.agent来获取服务,DNS解析也可以。但是,致电不起作用。我得到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);
});
回答:
您还没有提到什么是你想了在领事登记接入服务的IP地址。我怀疑注册人不会注册您期望在app_net网络中使用的IPS,这就是为什么它不适合您。如果是这种情况,请检查注册人的文档如何操作注册的IP地址或使用其他方法向Consul注册服务。
以上是 在Docker环境中使用Consul DNS的HTTP请求 的全部内容, 来源链接: utcz.com/qa/266300.html