最近学习SpringCloud,在看PiggyMetrics这个项目,发现里面有一些让人费解的配置,如下:
spring: cloud: config: uri: http://config:8888
eureka: client: serviceUrl: defaultZone: http://registry:8761/eureka/
security: oauth2: resource: user-info-uri: http://auth-service:5000/uaa/users/current
spring: data: mongodb: host: account-mongodb
这些yml配置文件中的uri和host均没有指定具体的IP地址,而是指定了对应的服务提供方名称(service-name),如config,auth-service,account-service,register,我按照传统启动SpringBoot应用的思路,在IDEA里面Run相应服务的Application启动类,发现它是会报错了,例如找不到配置中心http://config:8888,这可以理解。
可是让人费解的是,如果使用项目描述文件中的docker-compose命令启动,就一切正常,然后通过IP地址访问也正常,这就让我非常纳闷了?我理解服务在启动过程中,应该也是会去往注册中心 http://config:8888 注册的,我本机没有绑定相关host,难道docker-compose实现了这种uri中的host映射到对应的service所在IP的功能?这又是一个什么机制呢? 我搜索了很多关于Spring-Cloud-Starter-Config和Docker-Compose的资料,都没有找到类似的功能机制,实在是费解。
服务发现,从注册中心找这个名称的微服务作为注册中心
<p>我觉得是docker-compose.yml里面有config这个服务,所以在docker里面是能找到config这个服务,也就能找到 <span>http://config:8888</span> 了。</p>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。