13강예상 3분입문
[요약] Part 3. 복잡한 시스템을 한 번에: Docker Compose
Part 3. 복잡한 시스템을 한 번에: Docker Compose의 핵심 내용을 정리하고 복습하는 요약 회차입니다.
- 학습 목표: 도커 컴포즈(Docker Compose)를 활용한 다중 컨테이너 통합 관리 숙지
- 핵심 가치: YAML 파일 하나로 프론트, 백엔드, DB를 한 번에 제어하는 선언적 오케스트레이션
- 요약 포인트: 컴포즈 필수 명령어, 내부망 서비스 이름 통신, Health Check 기반 실행 순서 보장
docker-compose.yml 작성 예시
version: '3.8'
services:
web:
image: nginx
ports:
- "8080:80"1. 컴포즈 핵심 명령어와 네트워크
- 필수 명령어 암기:
- `docker compose up -d`: 전체 컨테이너 백그라운드 일괄 실행
- `docker compose down`: 네트워크 및 전체 컨테이너 일괄 종료 및 정리
- `docker compose logs -f`: 전체 서비스의 로그를 실시간으로 모니터링
- 내부 네트워크 통신:
- IP 주소 암기 불필요
- 컨테이너끼리는 `api`, `db` 등 서비스 이름을 도메인처럼 사용하여 직통 연결 가능
네트워크 연결 시 자주 하는 실수
오해 또는 실수
컨테이너 통신을 위해 항상 ports 옵션을 연다.
바로잡기
ports는 외부 접속용이며, 내부 통신은 포트 매핑 없이 서비스 이름만으로 가능합니다.
2. 완벽한 부팅 순서 제어 (depends_on)
- 문제점: DB 컨테이너가 켜졌다고 해서 내부 DB 프로그램이 즉시 응답 가능한 것은 아님 (시차 발생)
- 해결책: Health Check와 `depends_on`을 결합하여 완벽한 준비 상태 보장
순서 제어 방식 비교
| 방식 | 설명 | 결과 |
|---|---|---|
| 단순 depends_on | 지정된 컨테이너 실행 직후 바로 다음 컨테이너 실행 | DB 연결 에러 등 타이밍 문제 발생 위험 |
| depends_on + Health Check | 선행 애플리케이션이 완전히 준비(Healthy)될 때까지 대기 | 의존성에 맞는 안전하고 정확한 부팅 완료 |
- Health Check 부가 효과: 부팅 순서 제어뿐만 아니라 장애 발생 시 자동 복구를 위한 핵심 지표로도 활용됨
개념 퀴즈
퀴즈 답을 맞춰야 학습 완료가 됩니다.다음 중 도커 컴포즈 환경에서, 백엔드 컨테이너가 데이터베이스 컨테이너의 완벽한 부팅(응답 가능 상태)을 안전하게 기다렸다가 켜지게 만들기 위한 가장 적절한 방법은 무엇인가요?
3줄 요약
- 1도커 컴포즈는 docker-compose.yml 파일 하나로 여러 컨테이너를 한 번에 올리고 내리는 선언적 관리 도구입니다.
- 2컴포즈 환경 내에서는 복잡한 IP를 외울 필요 없이 서비스 이름(예: db, api)으로 컨테이너 간 통신이 가능합니다.
- 3Health Check와 depends_on 옵션을 결합하면 애플리케이션 레벨의 실행 순서를 안전하게 보장할 수 있습니다.