繁体   English   中英

如何等待docker-entrypoint-initdb.d在Shell脚本/ Bash中加载数据库?

[英]How to wait for docker-entrypoint-initdb.d to load DB in Shell Script/Bash?

我编写了一个Shell脚本来重建测试数据库,并在docker-entrypoint-initdb.d上加载dumps.sql,然后执行phpunit测试。

docker-compose stop mysql
sudo rm -Rf ~/.laradock/data/mysql
docker-compose up --force-recreate --build -d mysql
docker-compose up -d nginx
docker-compose exec workspace phpunit

一切正常。 但是,执行第三行的转储将在后台加载,并且需要一些时间来加载。 当执行最后一行时,数据库转储仍在加载中

我必须等待大约1或2分钟。 我想要的是一种解决方案,例如:-在2个Shell命令之间进行睡眠或(以获取更好的代码)-使最后一行等待转储加载的完全执行。

我怎么知道重建容器时调用的docker-entrypoint-initdb.d已满载? 在shell脚本中使用。

bash命令中的Hmm(如果在新行中)在彼此完成之后执行。 docker-compose的-d选项可能会将进程发送到后台。 因此,在这种情况下,请尝试使用wait所有子进程的wait命令:

docker-compose stop mysql
sudo rm -Rf ~/.laradock/data/mysql
docker-compose up --force-recreate --build -d mysql
docker-compose up -d nginx
wait
docker-compose exec workspace phpunit

如果那没有帮助,您也可以尝试使用该删除-d选项,并通过bash &将本机发送到后台。

docker-compose stop mysql
sudo rm -Rf ~/.laradock/data/mysql
docker-compose up --force-recreate --build mysql &
docker-compose up nginx &
wait
docker-compose exec workspace phpunit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM