扩展
与 Fragments一样,扩展可用于使您的 Compose 文件更高效且更易于维护。扩展也可以与锚点和别名一起使用 。
使用前缀x-
作为顶级元素来模块化您想要重用的配置。 Compose 会忽略以 开头的任何字段x-
,这是 Compose 默默忽略无法识别的字段的唯一例外。
它们还可以在 Compose 文件中不需要用户定义键的任何结构中使用。 Compose 使用这些来启用实验性功能,就像浏览器添加对 自定义 CSS 功能的支持一样
实施例1
x-custom:
foo:
- bar
- zot
services:
webapp:
image: example/webapp
x-foo: bar
service:
backend:
deploy:
placement:
x-aws-role: "arn:aws:iam::XXXXXXXXXXXX:role/foo"
x-aws-region: "eu-west-3"
x-azure-region: "france-central"
实施例2
x-env: &env
environment:
- CONFIG_KEY
- EXAMPLE_KEY
services:
first:
<<: *env
image: my-image:latest
second:
<<: *env
image: another-image:latest
在此示例中,环境变量不属于任何一个服务。他们已经被完全提升到x-env
延伸区域中。这定义了一个包含环境字段的新节点。&env
使用 YAML 锚点,因此两个服务都可以将扩展字段的值引用为*env
。
实施例3
x-function: &function
labels:
function: "true"
depends_on:
- gateway
networks:
- functions
deploy:
placement:
constraints:
- 'node.platform.os == linux'
services:
# Node.js gives OS info about the node (Host)
nodeinfo:
<<: *function
image: functions/nodeinfo:latest
environment:
no_proxy: "gateway"
https_proxy: $https_proxy
# Uses `cat` to echo back response, fastest function to execute.
echoit:
<<: *function
image: functions/alpine:health
environment:
fprocess: "cat"
no_proxy: "gateway"
https_proxy: $https_proxy
nodeinfo
和服务echoit
都包括x-function
通过&function
锚点进行扩展,然后设置其特定的图像和环境。
实施例4
使用 YAML 合并,还可以使用多个扩展并共享和覆盖特定需求的附加属性:
x-environment: &default-environment
FOO: BAR
ZOT: QUIX
x-keys: &keys
KEY: VALUE
services:
frontend:
image: example/webapp
environment:
<< : [*default-environment, *keys]
YET_ANOTHER: VARIABLE
笔记
YAML 合并仅适用于映射,不能与序列一起使用。
在上面的示例中,环境变量是使用
FOO: BAR
映射语法声明的,而序列语法- FOO=BAR
仅在不涉及片段时才有效。
内容丰富的历史笔记
本节内容丰富。在撰写本文时,已知存在以下前缀:
字首 | 供应商/组织 |
---|---|
泊坞窗 | Docker |
库伯内特斯 | Kubernetes |
指定字节值
值将字节值表示为字符串,{amount}{byte unit}
格式为:支持的单位为b
(字节)、k
或kb
(千字节)、m
或mb
(兆字节)和g
或gb
(千兆字节)。
2b
1024kb
2048k
300m
1gb
指定持续时间
值将持续时间表示为 形式的字符串{value}{unit}
。支持的单位有us
(微秒)、ms
(毫秒)、s
(秒)、m
(分钟)和h
(小时)。值可以组合多个值而无需分隔符。
10ms
40s
1m30s
1h5m30s20ms