You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

命令说明

  1. 按服务分组遍历:通过.services | to_entries[]将services下的键值对(服务名+服务配置)转为可遍历的数组,确保每个服务的配置单独处理。
  2. 字段兜底处理:用//运算符为可能缺失的字段设置默认值(如未配置),避免表格出现空单元格。
  3. 端口格式优化:使用join(", ")将端口数组(如["9100:9100"])转为可读性更强的字符串格式。
  4. 直接生成表格结构:拼接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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 20:39:15