>데이터 베이스 >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 및 dependency_on 옵션을 사용하면 데이터베이스 연결을 확인하고 데이터베이스가 준비될 때까지 앱 시작을 지연시키는 메커니즘을 설정할 수 있습니다.

제공된 예에서 데이터베이스 컨테이너(db)에 대한 상태 확인은 mysqladmin을 활용합니다. localhost를 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 컨테이너는 그대로 유지됩니다. db 컨테이너가 상태 확인을 성공적으로 통과하여 데이터베이스가 완전히 작동하고 연결 준비가 되었음을 나타낼 때까지 일시 중지된 상태로 유지됩니다. 이렇게 하면 데이터베이스에 액세스할 수 있을 때까지 앱이 마이그레이션을 수행하거나 처리를 시작하지 않도록 하여 잠재적인 문제나 데이터 무결성 오류를 방지할 수 있습니다.

위 내용은 시작하기 전에 Docker Compose 애플리케이션의 데이터베이스가 준비되었는지 어떻게 확인할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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