>데이터 베이스 >MySQL 튜토리얼 >Docker Compose에서 종속 서비스를 시작하기 전에 MySQL 연결 준비 상태를 확인하는 방법은 무엇입니까?

Docker Compose에서 종속 서비스를 시작하기 전에 MySQL 연결 준비 상태를 확인하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-09 15:40:12654검색

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" 컨테이너)는 dependency_on을 사용하여 MySQL 컨테이너에 대한 종속성을 지정할 수 있습니다. 옵션:

app:
    depends_on:
        db:
            condition: service_healthy

이 구성은 정의된 상태 확인에 따라 "db" 컨테이너(MySQL)가 정상인 경우에만 "app" 컨테이너가 시작되도록 보장합니다.

Docker 예시 -compose File

모두 종합하면 다음은 이를 사용하는 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

이 구성을 사용하면 "db" 컨테이너(MySQL)가 정상이고 연결을 수락할 때까지 "api" 컨테이너가 시작되지 않으므로 앱이 시작되기 전에 데이터베이스가 준비되었는지 확인할 수 있습니다.

위 내용은 Docker Compose에서 종속 서비스를 시작하기 전에 MySQL 연결 준비 상태를 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.