# 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.

```hcl {title=docker-bake.hcl}
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`.

```console
$ docker buildx bake webapp
```

Puedes compilar múltiples objetivos a la vez pasando varios nombres de objetivos al comando `bake`.

```console
$ docker buildx bake webapp api tests
```

## Objetivo predeterminado

Si no especificas un objetivo al ejecutar `docker buildx bake`, Bake compilará el objetivo llamado `default`.

```hcl {title=docker-bake.hcl}
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:

```console
$ 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.

```hcl {title=docker-bake.hcl}
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](/build/bake/reference#target).

## Agrupar objetivos

Puedes agrupar objetivos utilizando el bloque `group`. Esto resulta muy útil cuando deseas compilar múltiples objetivos a la vez.

```hcl {title=docker-bake.hcl}
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`.

```console
$ 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

> [!NOTE]
>
> Envuelve 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:

```console
# 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:

```console
$ 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](/build/bake/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](/build/bake/matrices/).
- Dirígete a la [referencia de archivos de Bake](/build/bake/reference/) para conocer todas las propiedades que puedes configurar en un archivo de Bake y su sintaxis.

