解释 `<<: *name` 如何在 docker-compose 中引用 `&name`?

Explain how `<<: *name` makes a reference to `&name` in docker-compose?

试图了解 docker-compose 文件是如何创建的,因为我想将其复制到 kubernetes 部署 yaml 文件中。

参照cookiecutter-django's docker-compose production.yaml file:

...
services:
  django: &django
...

通过docker-compose 设计,这里的服务名称已经定义为django,但后来我注意到这个额外的位&django。这让我想知道为什么它在这里。再往下,我注意到以下内容:

...
celeryworker:
  <<: *django
...

我不明白这是怎么回事。 docker-compose 文档没有提及或提及使用 << 更不用说对命名服务的引用 *django.

任何人都可以解释上述工作原理以及如何将其复制到 kubernetes 部署或服务 yaml 文件(或两者?)如果可能吗?

编辑: 很相似,但我不清楚它是如何使用的。

发生了三种不同的事情,其中​​ none 是专门的 compose 语法,而不是 yaml 语法。

首先是用 & 后跟名称定义锚点。这类似于定义一个稍后在 yaml 中使用的变量,其值与它出现的 yaml 对象的值相匹配。

接下来是别名,用*指定,与锚同名。它使用 yaml 文件中第二个位置的锚点。

最后是使用 << 语法的映射合并,它将别名中的所有映射值与当前映射中的其余值合并,允许您覆盖已保存锚点中的值特定于撰写文件的该部分的值。

要深入了解这一点,请尝试搜索“yaml 锚点和别名”。我的第一个点击是这个博客 post:https://medium.com/@kinghuang/docker-compose-anchors-aliases-extensions-a1e4105d70bd