정의되지 않은 변수

정의되지 않은 변수 (UndefinedVar)

빌드 체크 규칙 중 하나로, 선언되지 않은 환경 변수나 빌드 인자를 사용한 경우를 알려줘요. 선언되지 않은 변수는 즉시 빌드를 실패시키지 않을 수 있지만, 나중에 예상치 못한 동작이나 오류를 만들 수 있어요.

출처: 문서

본문

이 체크는 환경 변수와 빌드 인자가 사용되기 전에 올바르게 선언됐는지 확인해요. 선언되지 않은 변수는 즉시 빌드를 실패시키지 않을 수 있지만, 빌드 과정 후반에 예상치 못한 동작이나 오류를 만들 수 있어요.

이 체크는 셸 형식(shell form)을 쓰는 RUN, CMD, ENTRYPOINT 지시어에는 정의되지 않은 변수를 평가하지 않아요. 셸 형식을 쓰면 변수가 명령 셸에 의해 해석되기 때문이에요.

또한 변수 이름의 오타 같은 흔한 실수도 감지해요. 예를 들어 다음 Dockerfile에서:

FROM alpine
ENV PATH=$PAHT:/app/bin

$PAHT가 정의되지 않았고 $PATH의 오타일 가능성이 있다고 식별해요:

Usage of undefined variable '$PAHT' (did you mean $PATH?)

출력 메시지

Usage of undefined variable '$foo'

예시

❌ 나쁜 예: $foo는 정의되지 않은 빌드 인자예요.

FROM alpine AS base
COPY $foo .

✅ 좋은 예: 접근하기 전에 foo를 빌드 인자로 선언해요.

FROM alpine AS base
ARG foo
COPY $foo .

❌ 나쁜 예: $foo가 정의되지 않았어요.

FROM alpine AS base
ARG VERSION=$foo

✅ 좋은 예: 베이스 이미지가 $PYTHON_VERSION을 정의해요.

FROM python AS base
ARG VERSION=$PYTHON_VERSION

더 알아보기