Interpolation

Interpolation (보간)

Compose 파일의 값은 변수로 설정되고 런타임에 보간될 수 있어요. Compose 파일은 Bash 유사 문법 ${VARIABLE}을 사용해요. $VARIABLE${VARIABLE} 둘 다 지원돼요.

출처: 문서

본문

중괄호 표현식에 대해 다음 형식이 지원돼요:

직접 치환 (Direct substitution)

  • ${VAR} → VAR의 값

기본값 (Default value)

  • ${VAR:-default} → VAR이 설정되고 비어 있지 않으면 그 값, 아니면 default
  • ${VAR-default} → VAR이 설정돼 있으면 그 값, 아니면 default

필수 값 (Required value)

  • ${VAR:?error} → VAR이 설정되고 비어 있지 않으면 그 값, 아니면 error와 함께 종료
  • ${VAR?error} → VAR이 설정돼 있으면 그 값, 아니면 error와 함께 종료

대체 값 (Alternative value)

  • ${VAR:+replacement} → VAR이 설정되고 비어 있지 않으면 replacement, 아니면 빈 값
  • ${VAR+replacement} → VAR이 설정돼 있으면 replacement, 아니면 빈 값

보간은 중첩될 수도 있어요:

  • ${VARIABLE:-${FOO}}
  • ${VARIABLE?$FOO}
  • ${VARIABLE:-${FOO:-default}}

${VARIABLE/foo/bar} 같은 다른 확장 셸 스타일 기능은 Compose에서 지원되지 않아요.

Compose는 $ 기호 뒤의 유효한 변수 정의를 만드는 문자열 — 영숫자 이름([_a-zA-Z][_a-zA-Z0-9]*) 또는 ${로 시작하는 중괄호 문자열 — 을 모두 처리해요. 그 외의 상황에서는 보간을 시도하지 않고 그대로 보존해요.

구성에서 리터럴 달러 기호가 필요하면 $$(이중 달러 기호)를 사용할 수 있어요. 이것은 Compose가 값을 보간하지 못하게도 하므로, $$를 쓰면 Compose가 처리하지 않기를 원하는 환경 변수를 참조할 수 있어요.

web:
  build: .
  command: "$$VAR_NOT_INTERPOLATED_BY_COMPOSE"

Compose가 치환된 변수를 해석할 수 없고 기본값이 정의되지 않으면 경고를 표시하고 변수를 빈 문자열로 치환해요.

Compose 파일의 어떤 값이든(복잡한 요소의 축약 문자열 표기 포함) 변수 치환으로 보간될 수 있으므로, 보간은 파일 단위로 병합보다 먼저 적용돼요.

보간은 YAML 값에만 적용되고 키에는 적용되지 않아요. labelsenvironment처럼 키가 실제 임의의 사용자 정의 문자열인 드문 곳에서는 보간을 적용하려면 동등 부호 문법을 사용해야 해요. 예:

services:
  foo:
    labels:
      "$VAR_NOT_INTERPOLATED_BY_COMPOSE": "BAR"
services:
  foo:
    labels:
      - "$VAR_INTERPOLATED_BY_COMPOSE=BAR"

더 알아보기 (Learn more)

  • Compose 환경 변수 및 보간 사용법은 Compose 문서를 참고해요.