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 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Li...
1、什么是docker?答:docker是开源的应用容器引擎;开发人员把他们的应用及依赖包打包发布到容器当中。...
1、什么是namespace? 答:名称空间,作用隔离容器 2、namespace隔离有那些? 答:ipc:共享内存、消息队...
1、Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 、如何将一台宿主机的docker环境...
环境要求: IP hostname 192.168.1.1 node1 项目规划: 容器网段:172.16.10.0/24 NGINX:172.16.10.10...
文档上传地址:https://files.cnblogs.com/files/lin-strive/07-docker%E8%B7%A8%E4%B8%BB%E6%9C%BA%E7...