我正试图使用yq (https://github.com/mikefarah/yq的go实现)解析我的坞-撰写文件,以便使用asciidoc自动生成文档。
我的对接者-Compose.yml看上去相当简单,没有做什么不寻常的事情:
---
version: "3.3"
services:
# prometheus metrics
node_exporter:
image: prom/node-exporter:latest
container_name: node_exporter
labels:
description: Prometheus exporter to monitor system metrics
restart: always
command:
- --path.rootfs=/host
pid: host
network_mode: host
# ports:
# - 9100:9100
# The network_mode: host tells docker to run the container as if it was running on the
# server itself, so all ports exports by the container will directly be mapped to the server.
volumes:
- /:/host:ro,rslave
- /etc/timezone:/etc/timezone:ro
# prometheus metrics
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
restart: always
expose:
- 9110
ports:
- 9110:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
# Mange containers
portainer:
image: portainer/portainer-ce:alpine
container_name: portainer
command: -H unix:///var/run/docker.sock --admin-password-file /tmp/portainer_passwords
restart: always
ports:
- 9990:9000
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
- ./assets/portainer.passwd:/tmp/portainer_passwords
- /etc/timezone:/etc/timezone:ro
volumes:
portainer_data:我想要每项服务的一些信息。对我来说最重要的是形象。容器名称重新启动和端口。另外,可能会给->描述贴上标签,这是我在某些文档中使用的字段(相应的服务实际上是做什么的)。
我不知道如何将这些字段合并到相应的服务中。当我运行yq eval '.services.[] | .container_name, .services.[] | .image' $composeFile时,我首先得到3行带有容器名称的行,然后得到3行带有图像的行。
node_exporter
cadvisor
portainer
prom/node-exporter:latest
gcr.io/cadvisor/cadvisor:latest
portainer/portainer-ce:alpine此结果不按服务分组。我更喜欢这样的:
node_exporter
prom/node-exporter:latest
cadvisor
gcr.io/cadvisor/cadvisor:latest
portainer
portainer/portainer-ce:alpine或者,由于我想生成asciidoc,最好的解决方案是:
|node_exporter |prom/node-exporter:latest
|cadvisor |gcr.io/cadvisor/cadvisor:latest
|portainer |portainer/portainer-ce:alpine通过这种方式,我可以生成一个asciidoc表的主体,其中包含关于我的文档服务的信息。
有谁知道我怎样才能让yq像我一样工作呢?
发布于 2022-07-24 21:57:32
每个.services.[]启动一个新的迭代。做一次,从那里提取你所需要的一切:
yq eval '.services.[] | "|" + .container_name + "| " + .image'|node_exporter| prom/node-exporter:latest
|cadvisor| gcr.io/cadvisor/cadvisor:latest
|portainer| portainer/portainer-ce:alpinehttps://stackoverflow.com/questions/73102220
复制相似问题