首页 >数据库 >mysql教程 >如何确保我的 Docker Compose 应用程序的数据库在启动前准备就绪?

如何确保我的 Docker Compose 应用程序的数据库在启动前准备就绪?

DDD
DDD原创
2024-12-11 15:23:11419浏览

How Can I Ensure My Docker Compose Application's Database is Ready Before Startup?

确保 Docker Compose 应用程序的数据库准备就绪

为了防止过早执行数据库迁移或应用程序启动,确保数据库在应用程序容器启动其进程之前,容器已完全运行。使用 Docker Compose 的 healthcheck 和 dependent_on 选项,可以建立一种机制来验证数据库连接并延迟应用程序启动,直到数据库准备就绪。

在提供的示例中,数据库容器 (db) 的运行状况检查使用 mysqladmin命令来 ping 本地主机并检查数据库是否正在接受连接。此测试确保数据库不仅已启动,而且还可访问。

这是所提供的 Docker Compose 文件的修改版本:

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 容器将保留处于挂起状态,直到数据库容器成功通过健康检查,表明数据库完全可操作并准备好连接。这可确保应用程序在数据库可访问之前不会尝试执行迁移或开始处理,从而防止潜在问题或数据完整性错误。

以上是如何确保我的 Docker Compose 应用程序的数据库在启动前准备就绪?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn