빌드 변수
빌드 변수 (Build variables)
빌드 인자(build arguments)와 환경 변수(environment variables)는 모두 빌드 과정에 정보를 전달하는 수단이에요. 이들을 사용해 빌드를 파라미터화하면 더 유연하고 구성 가능한 빌드를 만들 수 있어요.
출처: 문서
본문
빌드 인자와 환경 변수는 최종 이미지에 노출되기 때문에 시크릿을 빌드에 전달하는 데에는 부적절해요. 대신 시크릿 마운트나 SSH 마운트를 사용해 시크릿을 안전하게 노출하세요. 자세한 내용은 Build secrets 문서를 참고해요.
유사점과 차이점 (Similarities and differences)
빌드 인자와 환경 변수는 모두 빌드를 파라미터화하는 데 쓸 수 있어요. 하지만 각각 뚜렷한 목적이 있어요.
빌드 인자 (Build arguments)
빌드 인자는 Dockerfile 자체를 위한 변수예요. Dockerfile 명령의 값을 파라미터화하는 데 사용해요. 예를 들어 설치할 의존성의 버전을 지정하는 데 빌드 인자를 쓸 수 있어요.
빌드 인자는 명령에서 사용되지 않는 한 빌드에 영향을 주지 않아요. Dockerfile에서 이미지 파일시스템이나 구성으로 명시적으로 전달하지 않는 한, 이미지에서 만든 컨테이너에는 접근할 수 없고 존재하지도 않아요. 빌드 인자는 이미지 메타데이터, provenance attestation, 이미지 히스토리에 남을 수 있어서 시크릿을 담기에 적합하지 않아요.
빌드 인자는 Dockerfile을 더 유연하고 유지보수하기 쉽게 만들어 줘요.
환경 변수 (Environment variables)
환경 변수도 빌드 과정에 값을 전달하는 데 쓸 수 있어요. 하지만 빌드 인자와 달리 실제 이미지 파일시스템이나 컨테이너 구성에 영향을 줄 수 있어요. 어떤 값을 최종 이미지에 남기고 싶은지, 아니면 빌드 과정에서만 쓰고 싶은지에 따라 선택하면 돼요.