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 값에만 적용되고 키에는 적용되지 않아요. labels나 environment처럼 키가 실제 임의의 사용자 정의 문자열인 드문 곳에서는 보간을 적용하려면 동등 부호 문법을 사용해야 해요. 예:
services:
foo:
labels:
"$VAR_NOT_INTERPOLATED_BY_COMPOSE": "BAR"
services:
foo:
labels:
- "$VAR_INTERPOLATED_BY_COMPOSE=BAR"
더 알아보기 (Learn more)
- Compose 환경 변수 및 보간 사용법은 Compose 문서를 참고해요.