mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-05-18 17:37:46 +08:00
Merge pull request #2089 from dvdksn/docs-bakefile-lookup-order
docs: clarify bake file lookup order and merge
This commit is contained in:
commit
be4fd7110d
@ -12,18 +12,118 @@ You can define your Bake file in the following file formats:
|
|||||||
|
|
||||||
By default, Bake uses the following lookup order to find the configuration file:
|
By default, Bake uses the following lookup order to find the configuration file:
|
||||||
|
|
||||||
1. `docker-bake.override.hcl`
|
1. `compose.yaml`
|
||||||
2. `docker-bake.hcl`
|
2. `compose.yml`
|
||||||
3. `docker-bake.override.json`
|
3. `docker-compose.yml`
|
||||||
4. `docker-bake.json`
|
4. `docker-compose.yaml`
|
||||||
5. `docker-compose.yaml`
|
5. `docker-bake.json`
|
||||||
6. `docker-compose.yml`
|
6. `docker-bake.override.json`
|
||||||
|
7. `docker-bake.hcl`
|
||||||
|
8. `docker-bake.override.hcl`
|
||||||
|
|
||||||
Bake searches for the file in the current working directory.
|
|
||||||
You can specify the file location explicitly using the `--file` flag:
|
You can specify the file location explicitly using the `--file` flag:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
$ docker buildx bake --file=../docker/bake.hcl --print
|
$ docker buildx bake --file ../docker/bake.hcl --print
|
||||||
|
```
|
||||||
|
|
||||||
|
If you don't specify a file explicitly, Bake searches for the file in the
|
||||||
|
current working directory. If more than one Bake file is found, all files are
|
||||||
|
merged into a single definition. Files are merged according to the lookup
|
||||||
|
order. That means that if your project contains both a `compose.yaml` file and
|
||||||
|
a `docker-bake.hcl` file, Bake loads the `compose.yaml` file first, and then
|
||||||
|
the `docker-bake.hcl` file.
|
||||||
|
|
||||||
|
If merged files contain duplicate attribute definitions, those definitions are
|
||||||
|
either merged or overridden by the last occurrence, depending on the attribute.
|
||||||
|
The following attributes are overridden by the last occurrence:
|
||||||
|
|
||||||
|
- `target.cache-to`
|
||||||
|
- `target.dockerfile-inline`
|
||||||
|
- `target.dockerfile`
|
||||||
|
- `target.outputs`
|
||||||
|
- `target.platforms`
|
||||||
|
- `target.pull`
|
||||||
|
- `target.tags`
|
||||||
|
- `target.target`
|
||||||
|
|
||||||
|
For example, if `compose.yaml` and `docker-bake.hcl` both define the `tags`
|
||||||
|
attribute, the `docker-bake.hcl` is used.
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ cat compose.yaml
|
||||||
|
services:
|
||||||
|
webapp:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
tags:
|
||||||
|
- bar
|
||||||
|
$ cat docker-bake.hcl
|
||||||
|
target "webapp" {
|
||||||
|
tags = ["foo"]
|
||||||
|
}
|
||||||
|
$ docker buildx bake --print webapp
|
||||||
|
{
|
||||||
|
"group": {
|
||||||
|
"default": {
|
||||||
|
"targets": [
|
||||||
|
"webapp"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"target": {
|
||||||
|
"webapp": {
|
||||||
|
"context": ".",
|
||||||
|
"dockerfile": "Dockerfile",
|
||||||
|
"tags": [
|
||||||
|
"foo"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
All other attributes are merged. For example, if `compose.yaml` and
|
||||||
|
`docker-bake.hcl` both define unique entries for the `labels` attribute, all
|
||||||
|
entries are included. Duplicate entries for the same label are overridden.
|
||||||
|
|
||||||
|
```console
|
||||||
|
$ cat compose.yaml
|
||||||
|
services:
|
||||||
|
webapp:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
labels:
|
||||||
|
com.example.foo: "foo"
|
||||||
|
com.example.name: "Alice"
|
||||||
|
$ cat docker-bake.hcl
|
||||||
|
target "webapp" {
|
||||||
|
labels = {
|
||||||
|
"com.example.bar" = "bar"
|
||||||
|
"com.example.name" = "Bob"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$ docker buildx bake --print webapp
|
||||||
|
{
|
||||||
|
"group": {
|
||||||
|
"default": {
|
||||||
|
"targets": [
|
||||||
|
"webapp"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"target": {
|
||||||
|
"webapp": {
|
||||||
|
"context": ".",
|
||||||
|
"dockerfile": "Dockerfile",
|
||||||
|
"labels": {
|
||||||
|
"com.example.foo": "foo",
|
||||||
|
"com.example.bar": "bar",
|
||||||
|
"com.example.name": "Bob"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Syntax
|
## Syntax
|
||||||
|
Loading…
x
Reference in New Issue
Block a user