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

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

DDD
发布: 2024-12-09 15:40:12
原创
647 人浏览过

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

Docker-Compose:在服务启动前确保 MySQL 连接就绪

在 Docker-compose 环境中,确保依赖的服务至关重要诸如数据库之类的服务,在依赖它们的其他服务启动之前就已准备好连接。本文提供了使用 Docker-compose 版本 2 中的 healthcheck 选项检查 MySQL 连接准备情况的解决方案。

Healthcheck 配置

为 MySQL 容器设置运行状况检查,在容器的配置中定义它。下面是一个健康检查示例:

healthcheck:
    test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
    timeout: 20s
    retries: 10
登录后复制

此健康检查使用 mysqladmin ping 命令来验证 MySQL 是否正在运行并接受连接。如果命令在指定的超时和重试限制内成功返回,则容器被认为是健康的。

依赖于健康服务

定义健康检查后,依赖的服务(在本例中为“app”容器)可以使用depends_on指定对MySQL容器的依赖关系选项:

app:
    depends_on:
        db:
            condition: service_healthy
登录后复制

此配置确保仅当“db”容器 (MySQL) 根据定义的运行状况检查运行正常时,“app”容器才会启动。

示例 Docker -compose 文件

将它们放在一起,这里是一个使用此的示例 Docker-compose 文件setup:

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
登录后复制

使用此配置,“api”容器将不会启动,直到“db”容器(MySQL)运行正常并接受连接,确保数据库在应用程序启动之前准备就绪。

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

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