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