빌드 정책 디버깅

빌드 정책 디버깅 (Debugging build policies)

정책이 예상대로 동작하지 않을 때는, 정책 평가를 검사하고 무슨 일이 일어나고 있는지 이해하는 데 사용 가능한 도구를 써요. 이 가이드는 디버깅 기법과 흔한 함정을 다뤄요.

출처: 문서

본문

빠른 참조 (Quick reference)

필수 디버깅 명령:

# 빌드 중 완전한 입력 데이터 보기 (권장)
$ docker buildx build --progress=plain --policy log-level=debug .

# 정책 체크와 결정 보기
$ docker buildx build --progress=plain .

# 다른 소스에 대한 입력 구조 탐색
$ docker buildx policy eval --print .
$ docker buildx policy eval --print https://github.com/org/repo.git
$ docker buildx policy eval --print docker-image://alpine:3.19

# 정책이 소스를 허용하는지 테스트
$ docker buildx policy eval .

--progress=plain으로 빌드하면:

$ docker buildx build --progress=plain .

빌드 시 오류가 없는 한 정책 평가는 조용히 진행돼요. 디버그 로깅으로 정책 평가 과정을 상세히 볼 수 있어요:

#1 loading policies Dockerfile.rego
#1 0.010 checking policy for source docker-image://alpine:3.19 (linux/arm64)
#1 0.011 Dockerfile.rego:8: image: {"ref":"alpine:3.19","repo":"alpine","tag":"3.19"}
#1 0.012 policy decision for source d...

이 출력에서 각 소스에 대해 정책 내부에서 어떤 값이 사용되는지, 어떤 결정이 내려졌는지 확인할 수 있어요.

흔한 함정 (Common gotchas)

  • 정책 파일이 올바른 위치(보통 Dockerfile 옆)에 있는지 확인해요.
  • Rego 문법 오류가 있으면 빌드가 즉시 실패해요.
  • input 구조를 정확히 알고 싶으면 policy eval --print로 확인해요.

더 알아보기 (Learn more)