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 중국어 웹사이트의 기타 관련 기사를 참조하세요!