Bake targets
A target in a Bake file represents a build invocation. It holds all the
information you would normally pass to a docker build
command using flags.
target "webapp" {
dockerfile = "webapp.Dockerfile"
tags = ["docker.io/username/webapp:latest"]
context = "https://github.com/username/webapp"
}
To build a target with Bake, pass name of the target to the bake
command.
$ docker buildx bake webapp
You can build multiple targets at once by passing multiple target names to the
bake
command.
$ docker buildx bake webapp api tests
Default target
If you don't specify a target when running docker buildx bake
, Bake will
build the target named default
.
target "default" {
dockerfile = "webapp.Dockerfile"
tags = ["docker.io/username/webapp:latest"]
context = "https://github.com/username/webapp"
}
To build this target, run docker buildx bake
without any arguments:
$ docker buildx bake
Target properties
The properties you can set for a target closely resemble the CLI flags for
docker build
, with a few additional properties that are specific to Bake.
For all the properties you can set for a target, see the Bake reference.
Grouping targets
You can group targets together using the group
block. This is useful when you
want to build multiple targets at once.
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 = "."
}
To build all the targets in a group, pass the name of the group to the bake
command.
$ docker buildx bake all
Pattern matching for targets and groups
Bake supports shell-style wildcard patterns when specifying target or grouped targets. This makes it easier to build multiple targets without listing each one explicitly.
Supported patterns:
*
matches any sequence of characters?
matches any single character[abc]
matches any character in brackets
NoteAlways wrap wildcard patterns in quotes. Without quotes, your shell will expand the wildcard to match files in the current directory, which usually causes errors.
Examples:
# Match all targets starting with 'foo-'
$ docker buildx bake "foo-*"
# Match all targets
$ docker buildx bake "*"
# Matches: foo-baz, foo-caz, foo-daz, etc.
$ docker buildx bake "foo-?az"
# Matches: foo-bar, boo-bar
$ docker buildx bake "[fb]oo-bar"
# Matches: mtx-a-b-d, mtx-a-b-e, mtx-a-b-f
$ docker buildx bake "mtx-a-b-*"
You can also combine multiple patterns:
$ docker buildx bake "foo*" "tests"
Additional resources
Refer to the following pages to learn more about Bake's features:
- Learn how to use variables in Bake to make your build configuration more flexible.
- Learn how you can use matrices to build multiple images with different configurations in Matrices.
- Head to the Bake file reference to learn about all the properties you can set in a Bake file, and its syntax.