首页 > 数据库 > mysql教程 > 如何在启动依赖服务之前确保 Docker Compose 中的 MySQL 准备就绪?

如何在启动依赖服务之前确保 Docker Compose 中的 MySQL 准备就绪?

Barbara Streisand
发布: 2024-12-24 13:01:14
原创
214 人浏览过

How to Ensure MySQL Readiness in Docker Compose Before Starting Dependent Services?

在 Docker Compose 中验证 MySQL 连接准备情况

在 Docker 容器领域,确保应用程序仅在其所需的依赖项准备就绪时才启动至关重要。这对于像 MySQL 这样的数据库尤其重要,它们需要在接受连接之前进行初始化和准备。

在 Docker Compose 中,depends_on 和 healthcheck 选项提供了一种控制容器之间依赖关系的方法。 dependent_on 选项指定容器应等到指定的依赖关系正常后再启动。另一方面,healthcheck 选项定义了一个基本测试来确定容器的健康状况。

在尝试验证 MySQL 就绪情况时,已经探索了各种方法:

  • 检查数据库目录是否创建:虽然创建数据库目录是必要的步骤,但它并不能保证MySQL已准备好接受连接。
  • 检索 MySQL 的版本:此测试提供有关 MySQL 服务器的信息,但不指示它是否已准备好使用。
  • Ping MySQL 管理员: 该方法将容器标记为健康,但可能无法准确反映 MySQL 的情况

在启动其他容器之前确保 MySQL 准备就绪的解决方案如下:

version: "2.1"
services:
    api:
        build: .
        container_name: api
        ports:
            - "8080:8080"
        depends_on:
            db:
                condition: service_healthy
    db:
        container_name: db
        image: mysql
        ports:
            - "3306"
        environment:
            MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
            MYSQL_USER: "user"
            MYSQL_PASSWORD: "password"
            MYSQL_DATABASE: "database"
        healthcheck:
            test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
            timeout: 20s
            retries: 10
登录后复制

在此配置中,直到 db 容器启动后,api 容器才会启动。健康,由健康检查配置中的“ping”测试确定。 “ping”测试验证 MySQL 服务器是否可达并且可以接受连接,确保 api 容器可以安全地启动其操作。

以上是如何在启动依赖服务之前确保 Docker Compose 中的 MySQL 准备就绪?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板