解释 `<<: *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
试图了解 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