在 Docker 容器领域,确保应用程序仅在其所需的依赖项准备就绪时才启动至关重要。这对于像 MySQL 这样的数据库尤其重要,它们需要在接受连接之前进行初始化和准备。
在 Docker Compose 中,depends_on 和 healthcheck 选项提供了一种控制容器之间依赖关系的方法。 dependent_on 选项指定容器应等到指定的依赖关系正常后再启动。另一方面,healthcheck 选项定义了一个基本测试来确定容器的健康状况。
在尝试验证 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中文网其他相关文章!