在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

回到顶部