【发布时间】:2014-10-19 15:16:49
【问题描述】:
我正在部署几个不同的 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
【问题讨论】:
-
添加一个bash循环来检查mysql服务状态?我认为这是最好的。
-
谢谢@fabrizioM。我采用了这种方法。
-
这个问题已经回答here。