有没有办法让这两个docker bash命令同步执行?

我自动为我的应用程序的开发环境设置,当我从命令行手动运行这两个命令,我必须等待约10秒后运行第一个运行第二个。

# command one (run the mysql docker container) docker run -p 3306:3306 --name mysql-container-name -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=mydbname -d mysql:latest # command two (import data into created db) docker exec -i mysql-container-name mysql mydbname < ./dev-db.sql --password=secret 

我试图将这两个命令自动化成一个bash别名,所以我可以做db-setup但是即使当我用&&分隔命令时,第二个命令执行得太快(在mysql容器完全安装之前)显然是因为我会得到这个错误:

 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 

任何想法如何才能得到第二个命令只有当第一个完全完成它所需的一切?

如果shell脚本是可以接受的,也许最简单的方法是尝试上传,等待5秒钟,再次尝试上传,直到它的工作。 像这样的东西:

 docker run -p 3306:3306 --name mysql-container-name -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=mydbname -d mysql:latest until [docker exec -i mysql-container-name mysql mydbname < ./dev-db.sql --password=secret] do sleep 5 done