Repolode
bazel-contrib

bazel-contrib/rules_img

Bazel 타깃으로 OCI 컨테이너 이미지를 빌드하는 Bazel 규칙으로, 베이스 이미지를 얕게 가져오고 레이어를 중복 제거하며 로컬 머신을 거치지 않는 푸시 전략을 제공합니다.

대체할 수 있는 제품:Docker Build

스타
144
포크
58
열린 이슈
16
마지막 커밋
22시간 전

어떤 프로젝트인가요?

rules_img는 Docker 데몬 없이 Bazel 빌드 내에서 직접 OCI 컨테이너 이미지를 빌드하기 위한 Bazel 규칙 모음입니다. Bzlmod와 WORKSPACE 설정을 모두 지원하며, 모든 *_binary 타깃(C++, Go, Python, Java, Rust 등)을 바이너리에서 가져온 entrypoint, cmd, env, 작업 디렉터리를 설정해 이미지로 패키징할 수 있습니다.

이 프로젝트는 성능에 중점을 둡니다. 베이스 이미지는 얕게 가져오므로 manifest와 config만 다운로드하고, CUDA와 같은 대용량 레이어는 필요할 때만 다운로드합니다. 레이어는 단일 액션으로 생성되며, 동일한 파일은 hardlink를 사용해 중복 제거합니다. 여러 푸시 전략(eager, lazy, CAS registry, BES)을 사용하면 로컬 머신을 거치지 않고 원격 실행 환경이나 Bazel 원격 캐시에서 이미지를 업로드할 수 있습니다. 멀티플랫폼 인덱스, eStargz 및 SOCI 지연 로딩, 파일시스템 및 디스크 이미지 레이어도 지원합니다.

핵심 기능

  • 01Docker 데몬 없이 격리된 빌드로 Bazel에서 OCI 이미지를 빌드합니다.
  • 02모든 *_binary 타깃을 컨테이너 이미지로 패키징하고 entrypoint와 cmd를 자동으로 설정합니다.
  • 03베이스 이미지를 얕게 가져와 레이어가 필요해질 때까지 manifest와 config만 다운로드합니다.
  • 04hardlink를 사용해 레이어 간 동일한 파일을 중복 제거합니다.
  • 05Bazel 원격 캐시에서 지연 푸시하는 방식을 포함해 여러 푸시 전략을 제공합니다.
  • 06멀티플랫폼 이미지 인덱스, eStargz, SOCI 지연 로딩을 지원합니다.

활용 사례

  • 기존 Bazel 모노레포에서 C++, Go, Python 또는 Java로 작성된 서비스의 컨테이너 이미지를 빌드합니다.
  • 빌드 머신마다 베이스 레이어 전체를 다운로드하지 않고 CUDA 기반 워크로드와 같은 대용량 GPU 이미지를 배포합니다.
  • 레이어를 빌드 호스트로 복사하지 않고 CI 또는 원격 실행 클러스터에서 레지스트리로 이미지를 푸시합니다.
  • 단일 Bazel 설정으로 linux/amd64 및 linux/arm64용 멀티아키텍처 이미지를 생성합니다.

빠른 시작

  1. 1

    MODULE.bazel 파일에 rules_img를 추가하세요

  2. 2

    선택 사항으로 .bazelrc 파일에서 기본 설정을 구성하세요

사용 전 알아둘 점

  • 현재 버전은 0.3.x이므로 릴리스 간에 API가 변경될 수 있습니다.
  • 디스크 이미지와 같은 일부 기능은 실험적 기능으로 표시되어 있습니다.

토픽

자주 묻는 질문

rules_img은(는) 무엇인가요?
Bazel 타깃으로 OCI 컨테이너 이미지를 빌드하는 Bazel 규칙으로, 베이스 이미지를 얕게 가져오고 레이어를 중복 제거하며 로컬 머신을 거치지 않는 푸시 전략을 제공합니다. rules_img는 Docker 데몬 없이 Bazel 빌드 내에서 직접 OCI 컨테이너 이미지를 빌드하기 위한 Bazel 규칙 모음입니다. Bzlmod와 WORKSPACE 설정을 모두 지원하며, 모든 *_binary 타깃(C++, Go, Python, Java, Rust 등)을 바이너리에서 가져온 entrypoint, cmd, env, 작업 디렉터리를 설정해 이미지로 패키징할 수 있습니다.
rules_img은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
rules_img은(는) Apache-2.0 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
rules_img은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. rules_img의 마지막 커밋은 2026년 11월 6일입니다.
rules_img은(는) 어디에 사용할 수 있나요?
기존 Bazel 모노레포에서 C++, Go, Python 또는 Java로 작성된 서비스의 컨테이너 이미지를 빌드합니다. 빌드 머신마다 베이스 레이어 전체를 다운로드하지 않고 CUDA 기반 워크로드와 같은 대용량 GPU 이미지를 배포합니다. 레이어를 빌드 호스트로 복사하지 않고 CI 또는 원격 실행 클러스터에서 레지스트리로 이미지를 푸시합니다. 단일 Bazel 설정으로 linux/amd64 및 linux/arm64용 멀티아키텍처 이미지를 생성합니다.
rules_img는 어떻게 설치하나요?
MODULE.bazel 파일에 rules_img를 추가하세요 선택 사항으로 .bazelrc 파일에서 기본 설정을 구성하세요
rules_img은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/bazel-contrib/rules_img

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트