Docker Compose는 여러 컨테이너로 구성된 애플리케이션을 정의하고 실행하는 도구다. 서비스, 네트워크, 볼륨을 YAML 설정에 모아 관리해 애플리케이션 묶음의 생성과 실행 상태를 다룰 수 있다. Docker Compose 문서
위키 서비스 구성 예시
위키 웹서버, 데이터베이스, 캐시가 각각 필요하다면 서비스를 나누고 연결 관계를 설정한다. 각 서비스는 사용할 이미지, 환경 설정, 네트워크와 볼륨을 지정할 수 있다. Docker 명령을 여러 번 수동 입력하는 대신 구성 파일이 실행 구조를 설명하도록 하는 것이다.
| 서비스 | 구성에서 확인할 내용 |
|---|---|
| web | 공개 포트와 데이터베이스 연결 주소 |
| db | 데이터 보존 볼륨과 상태 확인 |
| cache | 내부 접근 범위와 필요한 저장 정책 |
이 구성은 예시이며 모든 위키에 세 서비스가 반드시 필요하다는 뜻은 아니다.
시작 순서와 준비 상태
컨테이너가 시작됐다고 데이터베이스가 쿼리를 받을 준비까지 끝난 것은 아니다. Compose의 의존성 조건과 healthcheck를 함께 사용하면 준비 상태에 맞춘 시작 순서를 구성할 수 있다. 단순한 순서 지정만으로 애플리케이션의 연결 재시도 기능을 완전히 대신할 수는 없다. Compose 시작 순서 안내
코드와 데이터를 분리하기
컨테이너 이미지는 실행 코드의 배포 단위로 삼고, 데이터베이스 파일은 별도 볼륨으로 보관하는 구조를 생각할 수 있다. 설정 파일만 백업하고 실제 데이터 볼륨을 누락하면 복구에 필요한 내용이 빠질 수 있다. 운영 환경에서는 구성과 데이터의 복구 절차를 각각 확인한다.
적용 범위
Compose는 개발, 테스트, 운영 등에서 사용할 수 있지만 구성 파일이 있다고 다중 서버 장애 복구가 자동으로 완성되지는 않는다. 단일 호스트 장애, 저장소, 비밀값, 로그 수집은 별도로 설계한다. Kubernetes처럼 클러스터를 관리하는 플랫폼과는 운영 모델이 다르므로 서비스 규모와 관리 요구에 맞춰 선택한다.