mirror of https://github.com/docker/docs.git
78 lines
1.7 KiB
Markdown
78 lines
1.7 KiB
Markdown
It is possible to re-use configuration fragments using extension fields. Those
|
|
special fields can be of any format as long as they are located at the root of
|
|
your Compose file and their name start with the `x-` character sequence.
|
|
|
|
> **Note**
|
|
>
|
|
> Starting with the 3.7 format (for the 3.x series) and 2.4 format
|
|
> (for the 2.x series), extension fields are also allowed at the root
|
|
> of service, volume, network, config and secret definitions.
|
|
|
|
```yaml
|
|
version: "{{ site.compose_file_v3 }}"
|
|
x-custom:
|
|
items:
|
|
- a
|
|
- b
|
|
options:
|
|
max-size: '12m'
|
|
name: "custom"
|
|
```
|
|
|
|
The contents of those fields are ignored by Compose, but they can be
|
|
inserted in your resource definitions using [YAML anchors](https://yaml.org/spec/1.2/spec.html#id2765878).
|
|
For example, if you want several of your services to use the same logging
|
|
configuration:
|
|
|
|
```yaml
|
|
logging:
|
|
options:
|
|
max-size: '12m'
|
|
max-file: '5'
|
|
driver: json-file
|
|
```
|
|
|
|
You may write your Compose file as follows:
|
|
|
|
```yaml
|
|
version: "{{ site.compose_file_v3 }}"
|
|
x-logging:
|
|
&default-logging
|
|
options:
|
|
max-size: '12m'
|
|
max-file: '5'
|
|
driver: json-file
|
|
|
|
services:
|
|
web:
|
|
image: myapp/web:latest
|
|
logging: *default-logging
|
|
db:
|
|
image: mysql:latest
|
|
logging: *default-logging
|
|
```
|
|
|
|
It is also possible to partially override values in extension fields using
|
|
the [YAML merge type](https://yaml.org/type/merge.html). For example:
|
|
|
|
```yaml
|
|
version: "{{ site.compose_file_v3 }}"
|
|
x-volumes:
|
|
&default-volume
|
|
driver: foobar-storage
|
|
|
|
services:
|
|
web:
|
|
image: myapp/web:latest
|
|
volumes: ["vol1", "vol2", "vol3"]
|
|
volumes:
|
|
vol1: *default-volume
|
|
vol2:
|
|
<< : *default-volume
|
|
name: volume02
|
|
vol3:
|
|
<< : *default-volume
|
|
driver: default
|
|
name: volume-local
|
|
```
|