docker-compose下的java应用启动顺序两部曲之二:实战
上篇回顾 本文是《docker-compose下的java应用启动顺序两部曲》的终篇,在上一篇 《docker-compose下的java应用启动顺序两部曲之一:问题分析》 中,我们以SpringCloud环境下的注册中心和业务服务为例,展示了docker-compose.yml中 depends_on 参数的不足:即只能控制容器创建顺序,但我们想要的是eureka服务就绪之后再启动业务服务,并且docker官方也认为 depends_on 参数是达不到这个要求的,如下图所示: 针对上述问题,docker给出的解决办法是使用 wait-for-it.sh 脚本来解决问题,地址:https://docs.docker.com/compose/startup-order/ ,如下图: 什么是wait-for-it.sh wait-for-it.sh 脚本用来访问指定的地址和端口,如果收不到响应就等待一段时间再去重试,直到收到响应后,再去做前面指定好的命令,如上图红框所示 ./wait-for-it.sh db:5432 -- python app.py 的意思是:等到 db:5432 这个远程访问能够响应的时候,就去执行 python app.py 命令 wait-for-it.sh文件的链接: https://raw.githubusercontent.com/zq2599/blog