簡體   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