gpt4 book ai didi

mysql - 我如何知道我的 docker mysql 容器何时启动并且 mysql 已准备好接受查询?

转载 作者:IT老高 更新时间:2023-10-28 12:34:55 25 4
gpt4 key购买 nike

我正在部署几个不同的 docker 容器,mysql 是第一个。我想在数据库启动后立即运行脚本并继续构建其他容器。该脚本一直失败,因为它试图在设置 mysql(来自 this official mysql container)的入口点脚本仍在运行时运行。

sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=MY_ROOT_PASS -p 3306:3306 -d mysql
[..] wait for mysql to be ready [..]
mysql -h 127.0.0.1 -P 3306 -u root --password=MY_ROOT_PASS < MY_SQL_SCRIPT.sql

有没有办法等待 docker 容器内的 entrypoiny mysql 设置脚本完成的信号? Bash sleep 似乎不是最佳解决方案。

编辑:使用这样的 bash 脚本。不是最优雅和最野蛮的力量,但就像一种魅力。也许有人会觉得这很有用。

OUTPUT="Can't connect"
while [[ $OUTPUT == *"Can't connect"* ]]
do
OUTPUT=$(mysql -h $APP_IP -P :$APP_PORT -u yyy --password=xxx < ./my_script.sql 2>&1)
done

最佳答案

您可以安装 mysql-client 软件包并使用 mysqladmin ping 目标服务器。在使用多个 docker 容器时很有用。结合 sleep 并创建一个简单的等待循环:

while ! mysqladmin ping -h"$DB_HOST" --silent; do
sleep 1
done

关于mysql - 我如何知道我的 docker mysql 容器何时启动并且 mysql 已准备好接受查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25503412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com