使用yq解析docker-compose.yml生成Asciidoc文档的方法咨询
使用Go版yq生成Docker Compose服务的Asciidoc表格文档
核心命令
直接执行以下Go版yq命令,即可从docker-compose.yml中提取指定字段并生成符合要求的Asciidoc表格:
yq e ' "|====" as $tableStart, "|服务名称|容器名称|镜像|重启策略|端口|描述" as $tableHeader, $tableStart, $tableHeader, .services | to_entries[] | ( .key as $serviceName, .value | ( .container_name // "未配置" as $containerName, .image // "未配置" as $image, .restart // "未配置" as $restart, (.ports | join(", ")) // "未配置" as $ports, .labels.description // "未配置" as $description ), "|", $serviceName, "|", $containerName, "|", $image, "|", $restart, "|", $ports, "|", $description ), "|====" ' docker-compose.yml
命令说明
- 按服务分组遍历:通过
.services | to_entries[]将services下的键值对(服务名+服务配置)转为可遍历的数组,确保每个服务的配置单独处理。 - 字段兜底处理:用
//运算符为可能缺失的字段设置默认值(如未配置),避免表格出现空单元格。 - 端口格式优化:使用
join(", ")将端口数组(如["9100:9100"])转为可读性更强的字符串格式。 - 直接生成表格结构:拼接Asciidoc表格的起始标记、表头、每行内容和结束标记,输出结果可直接嵌入Asciidoc文档使用。
示例输出
假设你的docker-compose.yml包含目标服务,执行命令后会输出类似以下的Asciidoc内容:
|==== |服务名称|容器名称|镜像|重启策略|端口|描述 |node_exporter|node_exporter_container|prom/node-exporter:latest|always|9100:9100|系统指标采集器 |cadvisor|cadvisor_container|gcr.io/cadvisor/cadvisor:latest|always|8080:8080|容器资源监控 |portainer|portainer_container|portainer/portainer-ce:latest|unless-stopped|9000:9000|Docker可视化管理界面 |====
内容的提问来源于stack exchange,提问作者Sebastian Sommerfeld
相关产品推荐
相关产品推荐

