docker compose如何控制docker container启动顺序?

来源:11-5 基于Docker-compose与Traefik1.x的容器化部署演示

拧壶冲

2021-01-09

遇到一个问题docker的mysql还没有完全启动,应用程序启动了,发了请求,然后报错了。
所以想请教老师,docker里面如何在yml中定义container启动的顺序?就是必须一个container完全工作了,别的才能启动。
因为docker的mysql container启动后,还不一定mysql完全能访问,我尝试了entryfile的方式,但是也没有成果,
老师有没有这个问题的解决方案,或者相关资料也行?

写回答

1回答

xiaomo

2021-01-22

同学你好,这种情况一般需要自己写脚本检查是否启动来解决。比如有个docker-compose.yml:

services:
  mysql-server:
    image: mysql-server:5.7
    // ....
    command: ["bash","/check_mysql.sh"]
  other-server-1:
    // ...
    depends-on:
      - "mysql-server"

其中check_mysql.sh是自定义脚本,会一直循环检查mysql服务是否启动完成(未完成一般就sleep一下,下一个周期再检查);直到mysql启动完成后,check_mysql.sh执行完成并退出,那么就可以启动其余depends-on相关的服务了。

应该也有其他更好的方法,欢迎大家推荐一下。

0
0

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程