Docker compose 如何使用删除YAML文件中的属性
由于最近ubuntu最新版本的一次改动,引入了一个有缺陷的docker compose版本,我不得不在我的管道上锁定docker compose版本 然而,有一项任务我用来帮助清理部署脚本,即Docker compose 如何使用删除YAML文件中的属性,docker-compose,yaml,azure-pipelines,yq,Docker Compose,Yaml,Azure Pipelines,Yq,由于最近ubuntu最新版本的一次改动,引入了一个有缺陷的docker compose版本,我不得不在我的管道上锁定docker compose版本 然而,有一项任务我用来帮助清理部署脚本,即DockerCompose@0。我正在尝试实现的功能相当于 - task: DockerCompose@0 displayName: 'Remove build options' inputs: action: 'Combine configuration' remove
DockerCompose@0
。我正在尝试实现的功能相当于
- task: DockerCompose@0
displayName: 'Remove build options'
inputs:
action: 'Combine configuration'
removeBuildOptions: true
因此,基本上我考虑使用yq
,它将解析YAML文件并删除不适用于堆栈部署的构建选项。然而,我并不完全确定如何做到这一点。因为我需要从每个可能包含它的服务中删除它
因此,给定以下输入
服务:
定义:
构建:./def
图片:特拉亚诺/def
ghi:
图片:特拉亚诺/ghi
版本:“3.7”
我想去
服务:
定义:
图片:特拉亚诺/def
ghi:
图片:特拉亚诺/ghi
版本:“3.7”
在Azure管道中执行此操作
步骤:
-狂欢节:|
URL=”https://github.com/docker/compose/releases/download/1.26.2/docker-compose-Linux-x86_64"
sudo curl-sL$URL-o/usr/local/bin/docker组合
sudo快速安装yq
displayName:安装其他软件
-狂欢节:|
docker compose配置| yq d-'services.*.build'>$(build.ArtifactStagingDirectory)/docker-compose.yml
displayName:Clean up docker-compose.yml
对于较新的yq版本():
yq d foo.yml 'services.*.build'
yq eval 'del(services.[].build)' foo.yml