Repolode
bazel-contrib

bazel-contrib/rules_img

Reglas de Bazel para crear imágenes de contenedor OCI a partir de targets de Bazel, con descarga superficial de imágenes base, deduplicación de capas y estrategias de publicación que evitan transferir datos por la máquina local.

Alternativa open source a:Docker Build

Estrellas
144
Forks
58
Issues abiertos
16
Último commit
ayer

¿Qué es?

rules_img es un conjunto de reglas de Bazel para crear imágenes de contenedor OCI directamente durante una compilación de Bazel, sin un daemon de Docker. Admite tanto configuraciones con Bzlmod como con WORKSPACE, y puede empaquetar cualquier target *_binary (C++, Go, Python, Java, Rust y otros) en una imagen, derivando del binario el entrypoint, cmd, env y el directorio de trabajo.

El proyecto se centra en el rendimiento. Las imágenes base se descargan de forma superficial: solo se obtienen el manifiesto y la configuración, y las capas grandes, como las de CUDA, se descargan únicamente cuando hacen falta. Las capas se generan en una sola acción y los archivos idénticos se deduplican mediante hardlinks. Varias estrategias de publicación (eager, lazy, CAS registry y BES) permiten subir imágenes desde la ejecución remota o la caché remota de Bazel sin pasar por la máquina local. También admite índices multiplataforma, descarga diferida con eStargz y SOCI, y capas de sistemas de archivos e imágenes de disco.

Funciones clave

  • 01Crea imágenes OCI en Bazel sin un daemon de Docker y con compilaciones herméticas.
  • 02Empaqueta cualquier target *_binary en una imagen de contenedor y configura automáticamente entrypoint y cmd.
  • 03Descarga las imágenes base de forma superficial: obtiene solo los manifiestos y las configuraciones hasta que se necesitan las capas.
  • 04Deduplica los archivos idénticos entre capas mediante hardlinks.
  • 05Ofrece varias estrategias de publicación, incluidas las publicaciones diferidas desde la caché remota de Bazel.
  • 06Admite índices de imágenes multiplataforma, eStargz y descarga diferida con SOCI.

Casos de uso

  • Crear imágenes de contenedor para servicios escritos en C++, Go, Python o Java dentro de un monorepo de Bazel existente.
  • Distribuir imágenes grandes para GPU, como las de cargas de trabajo basadas en CUDA, sin descargar todas las capas base en cada máquina de compilación.
  • Publicar imágenes desde CI o clústeres de ejecución remota en un registro sin copiar las capas al host de compilación.
  • Generar imágenes multiarquitectura para linux/amd64 y linux/arm64 desde una sola configuración de Bazel.

Inicio rápido

  1. 1

    Añade rules_img a tu archivo MODULE.bazel

  2. 2

    Si quieres, configura los ajustes predeterminados en tu archivo .bazelrc

Antes de usarlo

  • La versión actual es la 0.3.x, por lo que la API aún puede cambiar entre versiones.
  • Algunas funciones, como las imágenes de disco, están marcadas como experimentales.

Temas

Preguntas frecuentes

¿Qué es rules_img?
Reglas de Bazel para crear imágenes de contenedor OCI a partir de targets de Bazel, con descarga superficial de imágenes base, deduplicación de capas y estrategias de publicación que evitan transferir datos por la máquina local. rules_img es un conjunto de reglas de Bazel para crear imágenes de contenedor OCI directamente durante una compilación de Bazel, sin un daemon de Docker. Admite tanto configuraciones con Bzlmod como con WORKSPACE, y puede empaquetar cualquier target *_binary (C++, Go, Python, Java, Rust y otros) en una imagen, derivando del binario el entrypoint, cmd, env y el directorio de trabajo.
¿rules_img es gratuito? ¿Qué licencia tiene?
rules_img es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿rules_img sigue mantenido?
Mantenimiento activo. El último commit de rules_img fue el 6 nov 2026.
¿Para qué puedo usar rules_img?
Crear imágenes de contenedor para servicios escritos en C++, Go, Python o Java dentro de un monorepo de Bazel existente. Distribuir imágenes grandes para GPU, como las de cargas de trabajo basadas en CUDA, sin descargar todas las capas base en cada máquina de compilación. Publicar imágenes desde CI o clústeres de ejecución remota en un registro sin copiar las capas al host de compilación. Generar imágenes multiarquitectura para linux/amd64 y linux/arm64 desde una sola configuración de Bazel.
¿Cómo se instala rules_img?
Añade rules_img a tu archivo MODULE.bazel Si quieres, configura los ajustes predeterminados en tu archivo .bazelrc
¿Dónde consigo rules_img?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/bazel-contrib/rules_img

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados