我看到类似的东西
celerybeat:
<<: *django
在 https://github.com/pydanny/cookiecutter-django 示例 docker 文件。
这是什么意思?我无法谷歌
<<: *
<<
和 *
都是 YAML 键(您也可以将它们视为运算符)。与您的问题相关的另一个关键是&
。
在 YAML 中,您可以定义锚并稍后使用它们。例如,
foo: &myanchor
key1: "val1"
key2: "val2"
bar: *myanchor
在此代码片段中,
&
定义了一个锚点并将其命名为myanchor
。
*myanchor
引用该锚点。现在 foo
和 bar
都具有相同的键和值。
<<
称为 YAML 合并键。你可以将它与OOP中的类继承进行比较(不太准确,但可以帮助你理解)。请参阅下面的示例。
foo: &myanchor
key1: "val1"
key2: "val2"
bar:
<< : *myanchor
key2: "val2-new"
key3: "val3"
在此代码片段中,我们将键和值从
foo
合并到 bar
,但将 key2
覆盖为新值。我们向 bar
添加一个新的键值对。
现在
bar
具有以下值:
{
"bar": {
"key1": "val1",
"key2": "val2-new",
"key3": "val3"
}
}