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을 참고해요.

더 알아보기 (Learn more)