정의되지 않은 변수
정의되지 않은 변수 (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
더 알아보기
- FROM에서 정의되지 않은 ARG (UndefinedArgInFrom): FROM 지시어의 정의되지 않은 인자 규칙을 확인해요.
- 빌드 체크 개요: 기타 빌드 체크 규칙을 살펴봐요.