ソースコードをビルド成果物に変換する、並列実行とキャッシュ効率に優れたビルドツールキット。フロントエンド経由でDockerfileをサポートし、Dockerのビルドエンジンとしても使われています。
bazel-contrib/rules_img
BazelターゲットからOCIコンテナイメージをビルドするルール。ベースイメージの浅いpull、レイヤーの重複排除、ローカルマシンを経由せずにバイト列を転送できるpush方式を備えています。
代替できる製品:Docker Build
- スター
- 144
- フォーク
- 58
- 未解決の Issue
- 16
- 最終コミット
- 16 時間前
これは何?
rules_imgは、Dockerデーモンを使わずにBazelビルド内でOCIコンテナイメージを直接ビルドするためのBazelルール集です。BzlmodとWORKSPACEの両方に対応し、あらゆる*_binaryターゲット(C++、Go、Python、Java、Rustなど)をイメージにパッケージ化できます。entrypoint、cmd、env、作業ディレクトリはバイナリから自動的に設定されます。
パフォーマンスを重視して設計されています。ベースイメージは浅くpullされ、manifestとconfigのみを取得し、CUDAのような大容量レイヤーは必要になるまでダウンロードしません。レイヤーは単一のアクションで生成され、同一ファイルはhardlinkで重複排除されます。複数のpush方式(eager、lazy、CAS registry、BES)により、ローカルマシンを経由することなく、remote executionやBazel remote cacheからイメージをアップロードできます。また、マルチプラットフォームのindex、eStargzとSOCIによるlazy pulling、ファイルシステムレイヤーとディスクイメージレイヤーにも対応しています。
主な機能
- 01Dockerデーモンを使わず、hermeticなビルドでBazel内にOCIイメージを構築します。
- 02あらゆる*_binaryターゲットをコンテナイメージにパッケージ化し、entrypointとcmdを自動設定します。
- 03ベースイメージを浅くpullし、レイヤーが必要になるまではmanifestとconfigのみをダウンロードします。
- 04hardlinkを使って、レイヤー間で同一ファイルを重複排除します。
- 05Bazel remote cacheからのlazy pushを含む、複数のpush方式を提供します。
- 06マルチプラットフォームのイメージindex、eStargz、SOCIによるlazy pullingに対応しています。
ユースケース
- 既存のBazelモノレポ内で、C++、Go、Python、Java製サービスのコンテナイメージをビルドする。
- ビルドマシンごとにすべてのベースレイヤーをダウンロードせずに、CUDAベースのワークロードなど、大容量のGPUイメージを配布する。
- レイヤーをビルドホストにコピーせず、CIやremote executionクラスターからレジストリにイメージをpushする。
- 1つのBazel設定から、linux/amd64とlinux/arm64向けのマルチアーキテクチャイメージを生成する。
クイックスタート
- 1
MODULE.bazel ファイルに rules_img を追加します
- 2
必要に応じて、.bazelrc ファイルでデフォルト設定を構成します
使う前に知っておきたいこと
- 現在のバージョンは 0.3.x のため、リリース間で API が変更される可能性があります。
- ディスクイメージなど、一部の機能は実験的とされています。
トピック
よくある質問
- rules_img とは?
- BazelターゲットからOCIコンテナイメージをビルドするルール。ベースイメージの浅いpull、レイヤーの重複排除、ローカルマシンを経由せずにバイト列を転送できるpush方式を備えています。 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やremote executionクラスターからレジストリにイメージをpushする。 1つの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 の数値は毎日更新されます。
関連プロジェクト
OCIコンテナ、イメージ、ボリューム、Podの実行・ビルド・管理に使える、Docker互換インターフェースを備えたデーモンレスCLIツールです。
Dockerデーモンを使わず、MavenまたはGradleでJavaアプリケーション向けの最適化されたDocker・OCIコンテナイメージをビルドします。
Goで書かれたアプリケーションカーネル。Linuxのシステムコールをユーザー空間で仲介してコンテナをサンドボックス化し、OCIランタイムrunscとして実行できます。
Clairは、コンテナイメージをインデックス化し、既知の脆弱性と照合するオープンソースの静的解析ツールです。
Podmanなどのコンテナエンジンを基盤に、コンテナやKubernetesをローカルでビルド、実行、管理できるデスクトップアプリ。