双箭头是什么(<<: *django) mean in a docker-compose file?

问题描述 投票:0回答:1

我看到类似的东西

   celerybeat:
     <<: *django

https://github.com/pydanny/cookiecutter-django 示例 docker 文件。

这是什么意思?我无法谷歌

<<: *

docker yaml
1个回答
89
投票

<<
*
都是 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"
   }
}
© www.soinside.com 2019 - 2024. All rights reserved.