Compose 파일 병합하기
Compose 파일 병합하기 (Merge Compose files)
Docker Compose는 일련의 Compose 파일을 함께 병합·오버라이드해 합성(composite) Compose 파일을 만들 수 있게 해 줘요.
기본 파일은 베이스 구성을 담아요. 오버라이드 파일은 기존 서비스에 대한 구성 오버라이드를 담거나, 완전히 새로운 서비스를 담을 수 있어요.
출처: 문서
본문
서비스가 두 파일 모두에 정의되어 있으면 Compose는 아래 규칙과 Compose Specification에 따라 구성을 병합해요.
여러 Compose 파일 병합 방법 (How to merge multiple Compose files)
-f 옵션으로 파일 목록을 지정해요. Compose는 커맨드 라인에 지정된 순서대로 파일을 병합해요. 이후 파일은 앞선 파일을 병합, 오버라이드, 또는 추가할 수 있어요.
예를 들어:
$ docker compose -f compose.yaml -f compose.admin.yaml run backup_db
베이스 compose.yaml이 이 서비스를 정의한다고 해 봐요:
webapp:
image: examples/web
ports:
- "8000:8000"
volumes:
- "/data"
오버라이드 compose.admin.yaml은 같은 서비스를 이렇게 정의할 수 있어요:
webapp:
environment:
- DEBUG=1
병합된 서비스 구성은:
webapp:
image: examples/web
ports:
- "8000:8000"
volumes:
- "/data"
environment:
- DEBUG=1
병합 규칙의 핵심 원칙:
- 스칼라 값은 나중 파일이 이기고, 목록은 이어 붙읍니다(특정 속성은 예외).
- 맵(예:
environment,labels)은 나중 파일의 키가 이깁니다. - 특정 속성(
image등)은 나중 파일이 오버라이드합니다.
자세한 병합 규칙은 Compose Specification을 참고해요.