MySQL Docker - 检查 mysql 服务器是否启动并且 运行
MySQL Docker - Check if mysql server is up and running
我正在尝试制作一个使用 MySQL 图像作为基础的图像,一旦我知道服务器已启动,我想创建一个数据库(和其他一些东西)。我有一个 bootstrap 脚本作为我的入口点,其中我做的第一件事是 运行 mysql 背景中图像的入口点脚本 ./entrypoint.sh mysqld &
.
目前,我在此之后所做的是启动一个循环,使用 mysqladmin --ping
来检查服务器是否已启动。一旦启动,我将启动我的其他命令并开始创建我想要的数据库。
这在 mysql 已经初始化时工作正常(即不是第一次执行容器 started/entrypoint.sh)。但是在第一个 运行 图像似乎创建了一个临时 mysql 服务器(mysqld --daemonize --skip-networking --default-time-zone=SYSTEM --socket="${SOCKET}"
- 来自入口点脚本),运行 一些命令然后停止该服务器。 Post 它启动实际的服务器。我面临的问题是 mysqladmin ping 命令实际上对临时服务器本身做出了成功反应,因此我的脚本试图创建失败的数据库。
我在这里读了很多答案,说 运行 ping 命令(我正在使用)来检查服务器是否启动,但是 none 我看到的提到了任何关于这个临时的东西服务器或如何检测它是否是临时服务器。
关于我如何检测到这一点的任何线索?或者如果我可以在上面提到的流程的任何部分做更好的事情?
我现在确实有一个 hacky 解决方案。一个涉及更新入口点脚本以使用与临时服务器的默认套接字文件不同的文件,然后我可以使用它来查看服务器 运行ning 是否是临时的,但如果存在标准解决方案。
谢谢!
因为初始化使用--skip-networking
,所以使用--protocol tcp
作为mysqladmin
的参数在tcp上执行ping
,也就是当最终实例是运行.
我正在尝试制作一个使用 MySQL 图像作为基础的图像,一旦我知道服务器已启动,我想创建一个数据库(和其他一些东西)。我有一个 bootstrap 脚本作为我的入口点,其中我做的第一件事是 运行 mysql 背景中图像的入口点脚本 ./entrypoint.sh mysqld &
.
目前,我在此之后所做的是启动一个循环,使用 mysqladmin --ping
来检查服务器是否已启动。一旦启动,我将启动我的其他命令并开始创建我想要的数据库。
这在 mysql 已经初始化时工作正常(即不是第一次执行容器 started/entrypoint.sh)。但是在第一个 运行 图像似乎创建了一个临时 mysql 服务器(mysqld --daemonize --skip-networking --default-time-zone=SYSTEM --socket="${SOCKET}"
- 来自入口点脚本),运行 一些命令然后停止该服务器。 Post 它启动实际的服务器。我面临的问题是 mysqladmin ping 命令实际上对临时服务器本身做出了成功反应,因此我的脚本试图创建失败的数据库。
我在这里读了很多答案,说 运行 ping 命令(我正在使用)来检查服务器是否启动,但是 none 我看到的提到了任何关于这个临时的东西服务器或如何检测它是否是临时服务器。
关于我如何检测到这一点的任何线索?或者如果我可以在上面提到的流程的任何部分做更好的事情?
我现在确实有一个 hacky 解决方案。一个涉及更新入口点脚本以使用与临时服务器的默认套接字文件不同的文件,然后我可以使用它来查看服务器 运行ning 是否是临时的,但如果存在标准解决方案。
谢谢!
因为初始化使用--skip-networking
,所以使用--protocol tcp
作为mysqladmin
的参数在tcp上执行ping
,也就是当最终实例是运行.