Compose 파일 레퍼런스
Compose 파일 레퍼런스
여러 컨테이너를 docker run으로 일일이 띄우다 보면 명령이 길어지고, 어떤 서비스가 어떤 설정으로 도는지 한눈에 보기 어려워져요. Docker Compose는 서비스·네트워크·볼륨 등을 Compose 파일이라는 YAML에 선언해 두고, 한 번에 통째로 올리고 내리는 도구예요. 이 페이지에서는 그 Compose 파일을 정의하는 규격을 정리해요.
현재 권장되는 Compose 파일 형식은 Compose Specification이에요. 서비스·네트워크·볼륨 등을 정의하는 데 쓰고요, 레거시 2.x·3.x 형식은 이 규격으로 통합됐어요. 이 규격은 Docker Compose CLI의 1.27.0 이상(v2로도 불림)에 구현돼 있어요.
Compose 파일로 무엇을 정의하나
Compose 파일은 Docker 애플리케이션의 서비스, 네트워크, 볼륨 등을 선언하는 YAML 문서예요. 가장 바깥의 키로 서비스(services)를, 필요에 따라 네트워크(networks)와 볼륨(volumes)을 정의해요. 한 번에 여러 컨테이너로 이뤄진 애플리케이션 전체를 선언적으로 관리할 수 있죠.
services:
web:
build: .
ports:
- "8000:5000"
redis:
image: redis
서비스 선언
services 아래에 각 서비스의 이름을 키로 두고, 이미지(image) 또는 빌드 설정(build), 포트(ports), 환경변수(environment), 볼륨(volumes) 등 필요한 속성을 붙여요. 서비스 이름은 컨테이너끼리의 네트워크 통신에서 주소로 쓰이므로, 의미 있는 이름을 붙이는 게 좋아요.
Compose Specification 구현
Docker Docs의 Compose Specification은 Docker Compose 구현을 기준으로 해요. 이 규격을 직접 구현하고 싶다면 Compose Specification 저장소를 참고해요.
레거시 형식과의 관계
레거시 2.x·3.x Compose 파일 형식은 Compose Specification으로 통합됐어요. 그래서 예전 형식으로 작성한 파일도 Compose v2에서 그대로 다뤄지며, 신규 작성 시에는 Specification 기준으로 쓰는 것이 권장돼요.
더 알아보기
- 환경변수 (Environment variables) — Compose 환경변수 설정과 보간
- 볼륨으로 컨테이너 데이터 저장하기 — Compose에서 볼륨을 선언하고
external: true로 재사용하기 - 컨테이너 네트워킹 — 서비스 간 연결과 네트워크 드라이버