开发者社区> 问答> 正文

spring.cloud.config.uri配置成servicename这个是什么原理??报错

最近学习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的资料,都没有找到类似的功能机制,实在是费解。

展开
收起
爱吃鱼的程序员 2020-06-06 09:48:54 599 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        服务发现,从注册中心找这个名称的微服务作为注册中心
                    
    
                        <p>我觉得是docker-compose.yml里面有config这个服务,所以在docker里面是能找到config这个服务,也就能找到 <span>http://config:8888</span> 了。</p>
    
    2020-06-06 09:49:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载