docker-compose 종속성 해결을 위해 자주 사용되는 2가지 상태 검사 레시피
5449 단어 dockercomposedocker
docker-compose
를 사용하여 로컬 시스템에 시스템을 구축하고 있습니다. 각 컨테이너가 서로 의존하지 않으면 시스템이 간단합니다. 그러나 일반적으로 docker-compose 네트워크 내에 종속 및 종속 컨테이너가 있습니다. 종속 종속 패턴의 가장 기본적인 사례와 예상 순서대로 컨테이너를 부팅하는 방법을 공유하고 있습니다.기본 사항: 도커 상태 확인
Docker에는 healthcheck 기능이 있습니다. 규칙은 Dockerfile 또는 docker-compose에 작성할 수 있습니다. docker-compose에서는 다음과 같이 작성합니다. server
컨테이너는 db
컨테이너에 의존합니다. db
에는 healthcheck
섹션과 조건이 있어야 합니다. server
는 db
에 depends_on
가 있어야 하고 그 아래에는 db
컨테이너가 상태가 된 후 부팅되도록 조건이 있어야 합니다.
services:
server:
image: your_server_image
depends_on:
db:
condition: service_healthy
db:
image: your_db_image
healthcheck:
test: ... # Command to check health.
interval: 5s # Interval between health checks.
timeout: 5s # Timeout for each health checking.
retries: 20 # Hou many times retries.
start_period: 10s # Estimated time to boot.
사례 1: 서버가 MySQL에 의존함
동일한 docker-compose 런타임에서 서버 및 MySQL 컨테이너를 유지하는 것은 매우 일반적인 패턴입니다. 서버 컨테이너가 부팅될 때 테이블 마이그레이션과 같은 작업을 수행하려면 MySQL 컨테이너가 준비된 후 서버를 부팅해야 합니다. db 컨테이너의 MySQL 서버에 mysqladmin
로 Ping하면 MySQL이 준비되었는지 확인할 수 있습니다. MySQL 서버는 contianer의 localhost에서 실행되며 호스트-h
매개변수는 localhost
여야 합니다. 비밀번호는 environment
매개변수로 MYSQL_ROOT_PASSWORD
섹션에서 설정한 비밀번호입니다.
db:
image: mysql:8.0.26
ports:
- 3316:3306
environment:
MYSQL_DATABASE: yourdb
MYSQL_ROOT_PASSWORD: pass
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "-uroot", "-ppass"]
interval: 5s
timeout: 5s
retries: 20
사례 2: 서버가 다른 서버에 종속됨
서버가 두 개 이상인 경우 서버가 다른 서버에 종속될 수 있습니다. 예를 들어 이미지 감지 서비스 시스템에서 하나는 사용자 액세스를 위한 메인 서버이고 다른 하나는 기계 학습에 의한 이미지 감지를 위한 서버입니다. 이 경우 셀프 핑이 가장 간단한 솔루션이어야 합니다. 서버가 컨테이너의 localhost
및 8080
포트에서 실행되는 경우 curl
ping 명령은 다음과 같아야 합니다.
image_detection:
image: your_image
ports:
- 8082:8080
healthcheck:
test: "curl -f localhost:8080"
interval: 5s
timeout: 5s
retries: 20
Reference
이 문제에 관하여(docker-compose 종속성 해결을 위해 자주 사용되는 2가지 상태 검사 레시피), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/ku6ryo/frequently-used-2-healthcheck-recipes-for-docker-compose-dependency-resolution-2ad9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
services:
server:
image: your_server_image
depends_on:
db:
condition: service_healthy
db:
image: your_db_image
healthcheck:
test: ... # Command to check health.
interval: 5s # Interval between health checks.
timeout: 5s # Timeout for each health checking.
retries: 20 # Hou many times retries.
start_period: 10s # Estimated time to boot.
동일한 docker-compose 런타임에서 서버 및 MySQL 컨테이너를 유지하는 것은 매우 일반적인 패턴입니다. 서버 컨테이너가 부팅될 때 테이블 마이그레이션과 같은 작업을 수행하려면 MySQL 컨테이너가 준비된 후 서버를 부팅해야 합니다. db 컨테이너의 MySQL 서버에
mysqladmin
로 Ping하면 MySQL이 준비되었는지 확인할 수 있습니다. MySQL 서버는 contianer의 localhost에서 실행되며 호스트-h
매개변수는 localhost
여야 합니다. 비밀번호는 environment
매개변수로 MYSQL_ROOT_PASSWORD
섹션에서 설정한 비밀번호입니다. db:
image: mysql:8.0.26
ports:
- 3316:3306
environment:
MYSQL_DATABASE: yourdb
MYSQL_ROOT_PASSWORD: pass
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "-uroot", "-ppass"]
interval: 5s
timeout: 5s
retries: 20
사례 2: 서버가 다른 서버에 종속됨
서버가 두 개 이상인 경우 서버가 다른 서버에 종속될 수 있습니다. 예를 들어 이미지 감지 서비스 시스템에서 하나는 사용자 액세스를 위한 메인 서버이고 다른 하나는 기계 학습에 의한 이미지 감지를 위한 서버입니다. 이 경우 셀프 핑이 가장 간단한 솔루션이어야 합니다. 서버가 컨테이너의 localhost
및 8080
포트에서 실행되는 경우 curl
ping 명령은 다음과 같아야 합니다.
image_detection:
image: your_image
ports:
- 8082:8080
healthcheck:
test: "curl -f localhost:8080"
interval: 5s
timeout: 5s
retries: 20
Reference
이 문제에 관하여(docker-compose 종속성 해결을 위해 자주 사용되는 2가지 상태 검사 레시피), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/ku6ryo/frequently-used-2-healthcheck-recipes-for-docker-compose-dependency-resolution-2ad9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
image_detection:
image: your_image
ports:
- 8082:8080
healthcheck:
test: "curl -f localhost:8080"
interval: 5s
timeout: 5s
retries: 20
Reference
이 문제에 관하여(docker-compose 종속성 해결을 위해 자주 사용되는 2가지 상태 검사 레시피), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ku6ryo/frequently-used-2-healthcheck-recipes-for-docker-compose-dependency-resolution-2ad9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)