我怎么知道当我的搬运工mysql的容器和mysql准备好接受服用查询? [英] How do I know when my docker mysql container is up and mysql is ready for taking queries?

查看:74
本文介绍了我怎么知道当我的搬运工mysql的容器和mysql准备好接受服用查询?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我部署了几个不同的泊坞窗的容器中,MySQL是第一个。我想尽快运行脚本,数据库启动并继续构建其他容器。该剧本已经失败,因为它试图运行时入口点脚本,它建立的MySQL(从这个官方的MySQL容器),还是正在运行。

I am deploying a few different docker containers, mysql being the first one. I want to run scripts as soon as database is up and proceed to building other containers. The script has been failing because it was trying to run when the entrypoint script, which sets up mysql (from this official mysql container), was still running.


须藤泊坞窗运行mysql的--name -e MYSQL_ROOT_PASSWORD = MY_ROOT_PASS -p 3306:3306 -d mysql的
[..]等待的mysql做好准备[..]
MySQL的-h 127.0.0.1 -P 3306 -u根--password = MY_ROOT_PASS< MY_SQL_SCRIPT.sql

有没有办法来等待entrypoiny MySQL的安装脚本泊坞窗容器内完成的信号?巴什睡眠似乎是一个次优的解决方案。

Is there a way to wait for a signal of an entrypoiny mysql setup script finishing inside the docker container? Bash sleep seems like a suboptimal solution.

编辑:拍得像这样的bash脚本。不是最优雅,有点蛮力,但就像一个魅力。也许有人会发现有用的。

Went for a bash script like this. Not the most elegant and kinda brute force but works like a charm. Maybe someone will find that useful.


输出=无法连接
    而[[$ OUTPUT == *无法连接*]
    做
        输出= $(的mysql -h $ APP_IP -P:$ APP_PORT -u YYY --password = XXX< ./my_script.sql 2 - ;&安培; 1)
    DONE

推荐答案

您可以安装mysql-client包,并使用mysqladmin ping通目标服务器。有用的多搬运工容器时。睡眠相结合,创建一个简单的等待循环:

You can install mysql-client package and use mysqladmin to ping target server. Useful when working with multiple docker container. Combine with sleep and create a simple wait-loop:

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

这篇关于我怎么知道当我的搬运工mysql的容器和mysql准备好接受服用查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆