Extension fields

可以使用扩展字段复用配置片段。这些特殊字段可以是任意格式,只要它们位于Compose文件的根目录中并且其名称以x字符序列开头即可。

从3.7格式(对于3.x系列)和2.4格式(对于2.x系列)开始,扩展字段也可以在服务,卷,网络,配置和secrets定义的根目录中使用。

version: "3.9"
x-custom:
  items:
    - a
    - b
  options:
    max-size: '12m'
  name: "custom"

这些字段的内容被Compose忽略,但是可以使用YAML锚点将其插入资源定义中。例如,如果我们希望多个服务使用相同的日志记录配置:

logging:
  options:
    max-size: '12m'
    max-file: '5'
  driver: json-file

可以像下面这样书写Compose文件:

version: "3.9"
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

也可以使用YAML合并类型覆盖部分扩展字段中的值。例如:

version: "3.9"
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

Last updated