控制docker-compose加载顺序
docker-compose启动服务的时候是没有加载顺序的,这就容易导致问题,比如有时候如果应用起来了,mysql还没起来,应用就会报错。由于docker-compose自身没提供解决方法,所以需要找其他方法达到顺序加载效果:
方法一:
在docker-compose.yaml
文件中的应用节点添加restart: always
表示如果服务启动不成功会一直尝试,虽然能够达到效果,但是不推荐使用。
方法二(推荐):使用wait-for-it
wait-for-it.sh是一个等待直到host和tcp稳定连接的bash脚本,而且是纯的没有任何外部依赖。
首先把脚本挂进容器:
1 | volumes: |
然后再应用启动的时候使用脚本:
1 | entrypoint: "sh /wait-for-it.sh mysql:3306 -- docker-entrypoint.sh" |