gpt4 book ai didi

yaml - YAML中隐藏的可重用 block

转载 作者:行者123 更新时间:2023-12-03 15:40:16 26 4
gpt4 key购买 nike

我试图在docker-compose.yml文件中定义一个可重用的块,使可重用的块定义本身不包含在最终(评估的)YAML中。

我知道如何使用以下语法定义可重用的块:

services:
default: &default
image: some/image

dashboard:
<<: *default
command: run dashboard
ports: ["3000:3000"]

但是,以上内容还在服务下创建了一个名为 default的条目,我想避免这样做。换句话说,我需要最终的YAML结果在 dashboard属性下仅包括 services

YAML有可能吗?我找不到足够清晰地讨论该结构的引用资料。

凭直觉,我尝试了下面的一些变体,但也没有用。
services:
&default:
image: some/image

dashboard:
<<: *default
command: run dashboard
ports: ["3000:3000"]

最佳答案

这在YAML 1.2(或任何以前的版本)中是不可能的。其背后的原因是,YAML被设计为一种序列化语言,而不是一种配置语言。

Anchor/Alias构造非常适合序列化循环数据结构。从未打算将其用于声明将在多个地方使用的变量。因此,目前,创建可在多个地方使用的可重用结构的唯一方法是在第一个使用它的位置定义结构。例如:

services:
dashboard:
<<: &default
image: some/image
command: run dashboard
ports: ["3000:3000"]
some_other_service:
<<: *default
other_props: ...

另外,请注意,合并键 <<并非YAML规范的一部分,仅被定义为YAML 1.1的附加功能。它没有为YAML 1.2定义,将在即将到来的YAML 1.3中明确弃用。

我们(例如:目前正在使用YAML 1.3的人员)已经意识到此缺失的功能,并计划使用YAML 1.3提供更好的解决方案。

关于yaml - YAML中隐藏的可重用 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44905033/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com