背景:
需求:
问题:
如何修改才能让gateway微服务正常启动?
应该是当远程config配置中心启动了,但是还尚未准备好(上下文已启动),此时其他服务也会启动,但是还无法获取到配置。
gateway服务中的请求地址被修改为localhost:8761这个错误是因为没有提供eureka.client.service-url.defaultZone这个配置,因为这个配置放在config中,此时config还未完全提供服务,但是gateway服务却已经启动了,由于找不到该配置,所以报错。
所以才会出现,单独重启gateway即可正常注册的情况(因为此时config已完全提供服务)。
depends_on仅仅是用于规范服务的上下文启动顺序,而不是完全提供服务的顺序。所以要确保config完全提供服务再启动其他微服务,可能需要编写一些脚本,用于监测config请求地址以及其端口是否已经可用(例如访问端口返回200)。对于服务的先后启动docker-compose官方推荐使用wait-for-it.sh进行脚本控制。
如果在K8S中来就好很多了,因为启动报错,可以设置重启容器的次数和多久重启,这样就可以确保服务都OK后提供。
编排方面,K8S始终功能强大太多,,而且docker-compose 单机玩编排还好,一集群就很。。。。