我编写了一个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
这很有效。但是,第三行执行转储,转储在后台加载,需要一些时间才能加载。当最后一行被执行时,数据库转储仍然被加载
我得等一两分钟。我想要的是这样一个解决方案:-在两个shell命令之间休眠,或者(为了更好的代码)-让最后一行等待转储加载的完全执行。
我怎么知道容器重建时调用的docker entrypoint initdb.d已完全加载?在shell脚本中使用。
1条答案
按热度按时间vsmadaxz1#
在bash中的hmm命令,如果在新行上,则在每一行和另一行完成后执行。
-d
docker compose的选项可能会将进程发送到后台。所以在这种情况下,试着用wait
等待所有子进程的命令:如果这对你没有帮助,你也可以尝试这个方法
-d
选项并通过bash本地将进程发送到后台&
: