加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:54:42 所属栏目:安全 来源:网络整理
导读:我正在为我的应用程序自动设置开发环境,当我从命令行手动运行这两个命令时,我必须在运行第一个后运行第二个命令后等待大约10秒钟. # command one (run the mysql docker container)docker run -p 3306:3306 --name mysql-container-name -e MYSQL_ROOT_PASSW

我正在为我的应用程序自动设置开发环境,当我从命令行手动运行这两个命令时,我必须在运行第一个后运行第二个命令后等待大约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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读