Introducción a Bake
Bake es una abstracción para el comando docker build que te permite gestionar más fácilmente tu configuración de compilación (banderas de la CLI, variables de entorno, etc.) de manera consistente para todos los miembros de tu equipo.
Bake es un comando integrado en la CLI de Buildx, por lo que mientras tengas Buildx instalado, también tendrás acceso a bake mediante el comando docker buildx bake.
Compilar un proyecto con Bake
Aquí tienes un ejemplo sencillo de un comando docker build:
$ docker build -f Dockerfile -t myapp:latest .
Este comando compila el Dockerfile en el directorio actual y etiqueta la imagen resultante como myapp:latest.
Para expresar la misma configuración de compilación utilizando Bake:
target "myapp" {
context = "."
dockerfile = "Dockerfile"
tags = ["myapp:latest"]
}Bake proporciona una forma estructurada de gestionar tu configuración de compilación y te evita tener que recordar todas las banderas de la CLI para docker build cada vez. Con este archivo, compilar la imagen es tan sencillo como ejecutar:
$ docker buildx bake myapp
Para compilaciones sencillas, la diferencia entre docker build y docker buildx bake es mínima. Sin embargo, a medida que tu configuración de compilación se vuelve más compleja, Bake proporciona una forma más estructurada de gestionar esa complejidad, la cual sería difícil de manejar con banderas de la CLI para docker build. También proporciona una manera de compartir las configuraciones de compilación con tu equipo, de modo que todos compilen imágenes de forma consistente con la misma configuración.
El formato de archivo de Bake
Puedes escribir archivos de Bake en HCL o JSON. Bake también puede leer archivos de Docker Compose y traducir cada servicio a un objetivo de compilación (target). HCL es el formato más expresivo y flexible, por lo que lo verás en la mayoría de los ejemplos de esta documentación y en proyectos que utilizan Bake.
Las propiedades que se pueden configurar para un objetivo se asemejan mucho a las banderas de la CLI para docker build. Por ejemplo, considera el siguiente comando docker build:
$ docker build \
-f Dockerfile \
-t myapp:latest \
--build-arg foo=bar \
--no-cache \
--platform linux/amd64,linux/arm64 \
.
El equivalente en Bake sería:
target "myapp" {
context = "."
dockerfile = "Dockerfile"
tags = ["myapp:latest"]
args = {
foo = "bar"
}
no-cache = true
platforms = ["linux/amd64", "linux/arm64"]
}Tip¿Quieres una mejor experiencia de edición para archivos de Bake en VS Code? Echa un vistazo a la extensión Docker DX para análisis estático (linting), navegación de código y escaneo de vulnerabilidades.
Pasos siguientes
Para obtener más información sobre el uso de Bake, consulta los siguientes temas:
- Aprende cómo definir y utilizar objetivos (targets) en Bake.
- Para ver todas las propiedades que se pueden configurar para un objetivo, consulta la referencia de archivos de Bake.