You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
각각은 mysql 5.7 버전과 worldpress의 최신 릴리즈 버전의 이미지를 가져와 사용한다.
데이터베이스의 상태(데이터)를 저장할 수 있도록 볼륨을 생성하고 환경변수를 통해 비밀번호, 사용자 이름 등을 정의한다.
그리고 wordpress 서비스는 db라는 앞서 정의한 mysql 컨테이너에 의존하고 있다.
depends_on 옵션과 컨테이너 실행 순서
docker-compose에서 depends_on을 통해 서비스의 시작과 종료 순서를 제어할 수 있다.
depends_on은 특정 컨테이너에 대한 의존 관계를 나타내며, 이 항목에 명시된 컨테이너가 먼저 생성되고 실행되도록 한다.
(반대로 컨테이너가 제거될때는 의존하는 컨테이너가 먼저, 의존되는 컨테이너가 그 후에 제거된다)
주의해야할 점은 실행 순서만 제어할 뿐, 컨테이너 내부의 어플리케이션이 준비된 상태인지에 대해 확인하지 않는다.
(여담으로 links, volumes_from, network_mode: "service:..." 또한 같은 류의 종속성을 설정한다.)
DB 컨테이너와 웹서버 컨테이너가 순서대로 실행된다고 해도, DB가 초기화 중이라면 웹서버가 정상 작동하지 못한다.
이와같은 문제를 해결하기 위한 방법으로 depends_on에 condition을 통해 healthcheck를 하는 방법과 wait-for-it, dockerize 등 패키지를 사용하는 방법이 존재한다.
depends_on에 몇가지 구성들을 추가할 수 있다.
restart: true로 설정하면 의존성 서비스가 업데이트 된 이후 Compose가 이 서비스를 재시작한다.
주의할 점은 의존성 업데이트와 같은 Compose 작업에 한하여 적용된다. 컨테이너가 종료된 후 자동 다시시작과는 다르다.
condition: depends_on, 즉 의존성이 충족된 것으로 판단하는 기준을 설정
service_started: 컨테이너 실행(디폴트)
service_healthy: 의존 서비스를 시작하기 전에 의존성이 정상(healthchek를 통해)일 것으로 예상되어야 함.
service_completed_successfully: 의존 서비스를 시작하기 전에 의존성이 성공적으로 완료될 때까지 기다려야함.
required: false로 설정하면 의존성 서비스가 시작되지 않거나 사용불가할 때 경고만 제공한다.
healthcheck
서비스 컨테이너의 정상 여부를 확인한다. Dockerfile과 동일한 방식으로 작동하며, Compose 파일이 Dockerfile에 설정된 값을 재정의하게 된다.
# test: 컨테이너 상태확인을 위해 Compose가 실행하는 명령# 문자열이거나 목록일 수 있으며, 목록인 경우 첫번째 항목은 NONE 또는 CMD, CMD-SHELL이어야 함.# string은 목록에서 CMD-SHELL을 쓰는것과 같다.healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]interval: 1m30stimeout: 10sretries: 3start_period: 40sstart_interval: 5s
test: ["CMD-SHELL", "curl -f http://localhost || exit 1"]위 아래 두 문장은 같다.test: curl -f https://localhost || exit 1
docker-compose.yaml
Docker Compose는 기본적으로 docker-compose.yaml 파일을 통해 여러 개의 컨테이너를 관리/배포한다.
tutorial에서 제공하는 yaml 파일을 사용한다.
두 개의 서비스를 확인할 수 있다.
각각은 mysql 5.7 버전과 worldpress의 최신 릴리즈 버전의 이미지를 가져와 사용한다.
데이터베이스의 상태(데이터)를 저장할 수 있도록 볼륨을 생성하고 환경변수를 통해 비밀번호, 사용자 이름 등을 정의한다.
그리고 wordpress 서비스는 db라는 앞서 정의한 mysql 컨테이너에 의존하고 있다.
The text was updated successfully, but these errors were encountered: