我正在部署几个不同的 Docker 容器,mysql 是第一个。我希望在数据库建立后立即运行脚本,并继续构建其他容器。该脚本一直失败,因为当设置 mysql (来自 这个正式的 mysql 容器)的入口点脚本仍在运行时,它正在尝试运行。
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 容器内完成的输入法 mysql 设置脚本的信号?Bash 睡眠似乎是一个次优的解决方案。
编辑: 像这样的 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