Bru*_*oLM 5 dictionary yaml docker docker-compose
我有一个像这样的yaml文件:
local: &local
image: xxx
# *tons of config*
ci:
<<: *local
image: # delete
build: .
Run Code Online (Sandbox Code Playgroud)
我想ci
继承所有的值local
,除了image
.
有没有办法"删除"这个值?
没有办法key
在YAML文件中标记删除.您只能覆盖现有值.
后者就是你所做的,你将空标量作为值与关键字相关联,image
就像你写的那样:
image: null # delete
Run Code Online (Sandbox Code Playgroud)
您可以执行以下两项操作:在YAML文件中进行后处理或制作基本映射.
如果要进行后处理,则将特殊唯一值与image
特殊标记对象关联,并在加载后递归遍历树以删除具有此特殊值的键值对.您是否可以在解析期间使用挂钩或覆盖其某些方法来执行此操作,这取决于解析器.
使用基本映射需要较少的工作,但对YAML文件更具侵入性:
localbase: &lb
# *tons of config*
local: &local
image: xxx
ci:
<<: *lb
build: .
Run Code Online (Sandbox Code Playgroud)
如果你做前者,你应该注意,如果你使用一个解析器来保持往返的"合并层次结构"(就像我的ruamel.yaml
解析器可以做的那样),删除键值对是不够的,在这种情况下是原始的从local
会回来.其他只在加载时解决此问题的解析器没有此问题.
对于接受值列表的属性,您可以[]
作为值发送。
例如在 docker-compose 中你不想继承ports
:
service_1: &service_1
# some other properties.
ports:
- "49281:22"
- "8876:8000"
# some other properties
image: some_image:latest
service_2:
<<: *service_1
ports: [] # it removes ports values.
image: null # it removes image value.
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1969 次 |
最近记录: |