使用多个 Docker 容器时,协调容器操作并确保准备情况至关重要。以部署 MySQL 容器并在数据库准备就绪后执行脚本为例。然而,正如问题中提到的,由于过早执行而遇到问题,突出表明需要一种可靠的机制来检测 MySQL 的可用性。
提供的 Bash 脚本提供了一个实用的解决方案,依赖于反复尝试的循环连接到 MySQL,直到成功建立连接。虽然有效,但此方法可能并非适合所有场景。
相反,请考虑利用 mysql-client 包中提供的 mysqladmin 实用程序。 mysqladmin 提供了用于管理 MySQL 实例的命令行界面。它的有用功能之一是 ping 命令,它会尝试连接到目标服务器。
要将 mysqladmin 集成到等待进程中,只需使用一个循环,使用适当的主机和身份验证参数重复执行 mysqladmin ping 即可。一旦命令不再返回错误,表明MySQL连接成功,继续进行进一步操作:
while ! mysqladmin ping -h"$DB_HOST" --silent; do sleep 1 done
这种方式提供了一种更轻量级、更有针对性的等待MySQL就绪的方式,最大限度地减少资源消耗并确保容器可靠协调。
以上是如何在 Docker 容器中优雅地等待 MySQL 就绪?的详细内容。更多信息请关注PHP中文网其他相关文章!