Docker 컨테이너 영역에서는 필요한 종속성이 준비된 경우에만 애플리케이션이 시작되도록 하는 것이 중요합니다. 이는 연결을 허용하기 전에 초기화하고 준비해야 하는 MySQL과 같은 데이터베이스에 특히 중요합니다.
Docker Compose에서 presents_on 및 healthcheck 옵션은 컨테이너 간의 종속성 관계를 제어하는 수단을 제공합니다. dependency_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
이 구성에서 api 컨테이너는 db 컨테이너가 시작될 때까지 시작되지 않습니다. 이는 healthcheck 구성의 "ping" 테스트에 의해 결정됩니다. "ping" 테스트는 MySQL 서버에 연결할 수 있고 연결을 수락할 수 있는지 확인하여 api 컨테이너가 안전하게 작업을 시작할 수 있는지 확인합니다.
위 내용은 종속 서비스를 시작하기 전에 Docker Compose에서 MySQL 준비 상태를 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!