微服务的启动
由于项目由单体变成了微服务的形式,因此项目的启动由一次变成了多次,但是单体项目与微服务有个不同点,就是微服务的服务之间存在依赖关系,不当的启动顺序会导致服务启动失败。
PS:以下仅作记录,没有真实使用过。
按照依赖顺序依次启动服务,但是微服务架构的项目,单个服务的实例的次数都不止一个,更不要说整个项目了,手动启动的话肯定是不允许的。
wait-for-it.sh和服务健康检查
为了便于微服务的分发和管理,使用Docker打包然后分发是一个很好的实践。
对于微服务间的服务依赖,Docker官方给出的建议是:通过wait-for-it.sh脚本来控制,即通过脚本探测某个依赖的服务的tcp端口是否开放,否则一直等待,直到端口探测成功,才会启动后面的命令;也可以通过服务健康检查来实现。
参考
https://docs.docker.com/compose/startup-order/
https://stackoverflow.com/questions/48684609/control-startup-order-in-docker-compose