我正在尝试制作一个以MySQL映像为基础的映像,我想在知道服务器启动后创建一个数据库(以及其他一些东西)。我有一个引导脚本作为我的入口点,我做的第一件事是在后台运行mysql image的入口点脚本
./entrypoint.sh mysqld &
.
目前,我在这之后要做的是开始一个循环,使用一些睡眠
mysqladmin --ping
检查服务器是否已启动。一旦启动,我启动其他命令并开始创建我想要的数据库。
当mysql已经初始化(即不是第一次启动容器/entrypoint.sh时)时,这可以正常工作。但在第一次运行时,该映像似乎创建了一个临时mysql服务器(
mysqld --daemonize --skip-networking --default-time-zone=SYSTEM --socket="${SOCKET}"
-从entrypoint脚本),运行一些命令,然后停止该服务器。发布它启动实际服务器的消息。我面临的问题是,mysqladmin ping命令实际上对临时服务器本身做出了成功的反应,因此我的脚本试图创建失败的数据库。
我在这里读到了很多答案,说要运行ping命令(我正在使用)来检查服务器是否启动,但我看到的答案中没有提到任何关于这个临时服务器的内容,也没有提到如何检测它是否是临时服务器。
有什么线索可以让我发现吗?或者,在我上面提到的流程的任何部分,我能做得更好吗?
我现在确实有一个黑客解决方案。其中一个涉及更新entrypoint脚本,以便为临时服务器使用不同于默认的套接字文件,然后我可以使用该文件来查看运行的服务器是否是临时的,但如果存在标准解决方案,我宁愿不使用此方法。
谢谢