Objetivos de Bake
Un objetivo (target) en un archivo de Bake representa una invocación de compilación. Contiene toda la información que normalmente pasarías a un comando docker build utilizando banderas.
target "webapp" {
dockerfile = "webapp.Dockerfile"
tags = ["docker.io/username/webapp:latest"]
context = "https://github.com/username/webapp"
}Para compilar un objetivo con Bake, pasa el nombre del objetivo al comando bake.
$ docker buildx bake webapp
Puedes compilar múltiples objetivos a la vez pasando varios nombres de objetivos al comando bake.
$ docker buildx bake webapp api tests
Objetivo predeterminado
Si no especificas un objetivo al ejecutar docker buildx bake, Bake compilará el objetivo llamado default.
target "default" {
dockerfile = "webapp.Dockerfile"
tags = ["docker.io/username/webapp:latest"]
context = "https://github.com/username/webapp"
}Para compilar este objetivo, ejecuta docker buildx bake sin ningún argumento:
$ docker buildx bake
Propiedades del objetivo
Las propiedades que puedes configurar para un objetivo se asemejan mucho a las banderas de la CLI para docker build, con algunas propiedades adicionales específicas de Bake.
La propiedad dockerfile especifica la ruta al Dockerfile para un objetivo. Si también configuras un context, la ruta del dockerfile se resolverá de forma relativa a ese contexto.
target "default" {
context = "app"
# se resuelve como app/src/www/Dockerfile
dockerfile = "src/www/Dockerfile"
}Para conocer todas las propiedades que puedes configurar para un objetivo, consulta la referencia de Bake.
Agrupar objetivos
Puedes agrupar objetivos utilizando el bloque group. Esto resulta muy útil cuando deseas compilar múltiples objetivos a la vez.
group "all" {
targets = ["webapp", "api", "tests"]
}
target "webapp" {
dockerfile = "webapp.Dockerfile"
tags = ["docker.io/username/webapp:latest"]
context = "https://github.com/username/webapp"
}
target "api" {
dockerfile = "api.Dockerfile"
tags = ["docker.io/username/api:latest"]
context = "https://github.com/username/api"
}
target "tests" {
dockerfile = "tests.Dockerfile"
contexts = {
webapp = "target:webapp"
api = "target:api"
}
output = ["type=local,dest=build/tests"]
context = "."
}Para compilar todos los objetivos de un grupo, pasa el nombre del grupo al comando bake.
$ docker buildx bake all
Coincidencia de patrones para objetivos y grupos
Bake admite patrones de comodín al estilo shell para especificar objetivos u objetivos agrupados. Esto facilita la compilación de múltiples objetivos sin tener que listar cada uno de ellos explícitamente.
Patrones admitidos:
*coincide con cualquier secuencia de caracteres?coincide con cualquier carácter individual[abc]coincide con cualquier carácter dentro de los corchetes
NoteEnvuelve siempre los patrones de comodín entre comillas. Sin comillas, tu shell expandirá el comodín para que coincida con los archivos del directorio actual, lo que causará errores.
Ejemplos:
# Coincidir con todos los objetivos que comiencen con 'foo-'
$ docker buildx bake "foo-*"
# Coincidir con todos los objetivos
$ docker buildx bake "*"
# Coincide con: foo-baz, foo-caz, foo-daz, etc.
$ docker buildx bake "foo-?az"
# Coincide con: foo-bar, boo-bar
$ docker buildx bake "[fb]oo-bar"
# Coincide con: mtx-a-b-d, mtx-a-b-e, mtx-a-b-f
$ docker buildx bake "mtx-a-b-*"
También puedes combinar múltiples patrones:
$ docker buildx bake "foo*" "tests"
Recursos adicionales
Consulta las siguientes páginas para obtener más información sobre las características de Bake:
- Aprende cómo usar variables en Bake para hacer que tu configuración de compilación sea más flexible.
- Aprende cómo puedes utilizar matrices para compilar múltiples imágenes con diferentes configuraciones en Matrices.
- Dirígete a la referencia de archivos de Bake para conocer todas las propiedades que puedes configurar en un archivo de Bake y su sintaxis.