![](/img/trans.png)
[英]docker permission denied for shell script in mysql image placed at docker-entrypoint-initdb.d
[英]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.