Bash 在模板中使用地址而不是ServiceAddress的领事模板

Bash 在模板中使用地址而不是ServiceAddress的领事模板,bash,nginx,docker,consul,consul-template,Bash,Nginx,Docker,Consul,Consul Template,我有一个问题,在领事模板似乎是取代服务“ServiceAddress”而不是“地址”在我的模板,我想知道是否有人可以告诉我为什么 在我的nginx容器中的bash会话中,concur模板也在运行,我可以通过以下方式从concur获取服务定义: curl http://consul-server.service.consul:8500/v1/catalog/service/service1 [{"Node":"ip-172-31-24-202","Address":"172.31.24.202",

我有一个问题,在领事模板似乎是取代服务“ServiceAddress”而不是“地址”在我的模板,我想知道是否有人可以告诉我为什么

在我的nginx容器中的bash会话中,concur模板也在运行,我可以通过以下方式从concur获取服务定义:

curl http://consul-server.service.consul:8500/v1/catalog/service/service1
[{"Node":"ip-172-31-24-202","Address":"172.31.24.202","ServiceID":"ip-172-31-24-202:service1:23141","ServiceName":"service1","ServiceTags":null,"ServiceAddress":"172.17.0.3","ServicePort":32809}]
我的领事模板文件如下所示:

{{range service "service1"}}server {{.Address}}:{{.Port}};
我希望这会输出服务的
地址
,而不是
服务地址
。但是,发生了以下情况:

consul-template -consul consul-server.service.consul:8500 -template "/var/templates/service1.conf.tmpl" -dry -once

server 172.17.0.3:32809

我发现,
.Address
是领事响应元数据的一部分,而不是服务元数据的一部分。这让我很困惑,因为我的Concur客户端运行在同一台主机上


我将
-ip
参数更改为我正在运行的注册器服务,使其成为运行docker的主机的内部ip地址(而不是默认值,即docker容器的ip),并且一切都正常工作。

是的,这非常混乱,以至于在迭代w/
{range服务时,我们没有公开服务目录“myservice”}
。感谢您指出这一点并提示注册者的
-ip
标志。