确保 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中文网其他相关文章!