我正在为我的应用程序自动设置开发环境,当我从命令行手动运行这两个命令时,我必须在运行第一个后运行第二个命令后等待大约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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。