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

前端之家收集整理的这篇文章主要介绍了mysql – 有没有办法让这两个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

猜你在找的Docker相关文章