当前位置: 首页 > news >正文

AsciiDoc + Antora开局

完整版 docker-compose.yml 工程模板

适配:AsciiDoc + Antora,同时支持网页静态站构建 + 整本PDF导出,内置中文渲染环境、本地Nginx预览,适配10万字手册。
附带配套目录结构、playbook、PDF中文主题、一键操作命令。

一、完整项目目录结构

Fortinet文档项目采用标准化的目录结构设计,确保开发、构建和部署流程清晰有序。以下是完整的项目目录结构及其详细说明:

fortinet-doc-project/ ├── docker-compose.yml # 核心编排文件,定义所有服务容器 ├── .dockerignore # Docker构建忽略文件,排除无关文件 ├── antora-site/ # Antora构建配置目录 │ ├── antora-playbook.yml # Antora主构建配置,定义组件、站点URL等 │ ├── pdf-assembler.yml # PDF打包配置,支持整本手册导出 │ └── pdf-theme/ # PDF自定义样式、中文字体配置 │ └── theme.yml # PDF主题配置文件,支持中文排版 ├── docs-src/ # AsciiDoc文档源码(Git托管) │ ├── antora.yml # 组件描述文件,定义版本、导航等 │ └── docs/modules/ROOT/ # 文档模块根目录 │ ├── pages/ # 文档页面(.adoc文件) │ ├── assets/ # 静态资源(图片、附件等) │ ├── nav.adoc # 导航菜单定义 │ └── attachments/ # 附件目录 └── build-output/ # 构建产物(自动生成,无需手动创建) ├── site/ # 在线静态网页 │ ├── index.html # 站点首页 │ ├── _/ # Antora生成的静态资源 │ └── 404.html # 404页面 └── export/ # 导出的整本PDF手册 └── fortinet-docs.pdf # 完整的PDF文档

目录结构详解

1. 根目录文件

  • docker-compose.yml:Docker Compose编排文件的核心,定义了Antora构建服务、Nginx预览服务等容器配置,实现一键启动和构建。
  • .dockerignore:排除不必要的文件(如.gitnode_modules、临时文件等),减少Docker镜像体积,提升构建速度。

2. Antora配置目录(antora-site/)
此目录集中管理文档构建的所有配置:

  • antora-playbook.yml:Antora的主配置文件,定义:
    • 文档源位置(指向docs-src/
    • 输出目录(build-output/site/
    • 站点标题、URL、UI主题等
    • 扩展功能配置(如PDF生成)
  • pdf-assembler.yml:PDF生成专用配置,支持:
    • 整本手册的章节顺序编排
    • 封面、目录、页眉页脚设置
    • 多格式输出选项(A4、Letter等)
  • pdf-theme/theme.yml:PDF样式主题,特别针对中文文档优化:
    • 中文字体嵌入(思源黑体、宋体等)
    • 中文标点避头尾规则
    • 行间距、段落间距调整

3. 文档源码目录(docs-src/)
采用Git友好的源码管理结构:

  • antora.yml:组件描述文件,定义:
    • 组件名称、版本号
    • 导航文件路径(nav.adoc
    • 显示标题和描述
  • docs/modules/ROOT/:主文档模块目录:
    • pages/:存放所有.adoc文档文件,支持多级目录组织
    • assets/:图片、视频、代码示例等静态资源
    • nav.adoc:定义文档站点的导航菜单结构
    • attachments/:用户可下载的附件文件

4. 构建输出目录(build-output/)
完全自动化生成,无需手动创建或修改:

  • site/:生成的静态网站,可直接部署到任何Web服务器或CDN
  • export/:PDF导出目录,包含完整的、排版精美的PDF手册

设计理念与优势

  1. 关注点分离:配置、源码、构建产物严格分离,便于版本控制和团队协作。
  2. 容器化标准化:所有构建环境通过Docker容器封装,消除环境差异。
  3. 中文本地化:专门的中文PDF主题配置,解决中文排版常见问题。
  4. 自动化流水线:从源码到网页+PDF的完整自动化流程,支持CI/CD集成。
  5. 企业级扩展性:模块化设计便于添加新功能(如多语言支持、自定义主题等)。

此目录结构经过生产环境验证,能够支持从个人开发到企业级文档团队的各种需求场景。

二、docker-compose.yml(可直接复制使用)

version:"3.8"services:# Antora构建服务:生成网页+PDF完整手册antora-builder:image:ghcr.io/antora/antora-pdf:latestcontainer_name:antora-doc-buildervolumes:# 挂载构建配置-./antora-site:/work# 挂载adoc文档源码-./docs-src:/docs-src# 挂载输出产物(网页+PDF)-./build-output:/work/buildworking_dir:/work# 容器预装中文字体,解决PDF中文乱码environment:-LANG=C.UTF-8-TZ=Asia/Shanghai# 构建命令,自动生成站点+PDFcommand:npx antora antora-playbook.yml# 构建完成自动删除容器restart:"no"# Nginx静态预览服务:查看构建后的在线文档doc-preview:image:nginx:alpinecontainer_name:antora-doc-previewports:-"8080:80"volumes:# 挂载构建好的静态网页-./build-output/site:/usr/share/nginx/htmlenvironment:-TZ=Asia/Shanghai# 依赖构建服务,先构建再预览depends_on:-antora-builderrestart:unless-stopped

三、配套 .dockerignore(避免无用文件打进容器)

放在项目根目录

# 构建产物 build-output/ # 本地node依赖 node_modules/ # 系统缓存 .DS_Store .idea/ .vscode/ *.log tmp/

四、配套 antora-site/antora-playbook.yml

site:title:FortiGate 中文配置手册url:https://docs.local/fortigatestart_page:ROOT:index.adoccontent:sources:# 本地文档源码目录-url:/docs-srcbranches:HEADstart_path:docs# 官方默认UI主题ui:bundle:url:https://gitlab.com/antora/antora-ui-default/-/jobs/artifacts/main/raw/build/ui-bundle.zip?job=buildsnapshot:trueoutput:dir:./build# 开启PDF导出扩展antora:extensions:-"@antora/pdf-extension"# PDF汇编配置引用pdf:assembler_file:./pdf-assembler.yml

五、配套 antora-site/pdf-assembler.yml(PDF打包)

component_version_filter:names:fortigateassembly:attributes:pdf-theme:./pdf-theme/theme.ymlsource-highlighter:rouge# 开启中文支持pdf-fontsdir:"/usr/share/fonts"pdf-page-size:A4pdf-margin-left:30mmpdf-margin-right:20mmbuild:command:bundle exec asciidoctor-pdf-r asciidoctor-kroki

六、配套 antora-site/pdf-theme/theme.yml(PDF中文主题)

解决中文方块乱码、自定义页眉、代码样式

font:catalog:# 容器内置开源中文字体noto_sans_cn:normal:NotoSansCJK-Regular.ttcbold:NotoSansCJK-Bold.ttcitalic:NotoSansCJK-Regular.ttcbold_italic:NotoSansCJK-Bold.ttcfallbacks:[noto_sans_cn]base:font-family:noto_sans_cnfont-size:11ptpage:margin:[25mm,20mm]header:font-family:noto_sans_cnline-height:1.2footer:font-family:noto_sans_cn

七、日常操作全套命令

1. 构建文档(生成网页 + 整本PDF手册)

docker-composerun--rmantora-builder

构建完成后产物位置:

  • 在线网页:build-output/site
  • 离线PDF手册:build-output/export/fortigate/7.4/fortigate.pdf

2. 启动本地网页预览(访问 http://localhost:8080)

docker-composeup-ddoc-preview

3. 停止预览服务

docker-composedown doc-preview

4. 清理全部构建产物(重新全量构建)

rm-rfbuild-outputdocker-composerun--rmantora-builder

八、企业级扩展优化点

  1. 多产品线/多版本文档
    修改antora-playbook.ymlcontent.sources,追加多个文档源目录,自动聚合多产品手册。
  2. CI/GitLab GitHub Actions 兼容
    该 compose 可直接在流水线调用docker-compose run antora-builder自动打包文档。
  3. 远程Git文档源
    playbook 的url替换为 Git 仓库地址,容器内置Git,构建时自动拉取最新文档。
  4. 权限问题(Linux服务器)
    挂载目录添加权限标识,避免文件权限报错:
volumes:-./docs-src:/docs-src:z-./antora-site:/work:z
  1. 自定义Logo、封面
    pdf-theme/放入图片,在theme.yml配置PDF封面背景图。

九、优势总结

  1. 本地无需安装Node、Ruby、Git、各类gem/npm依赖,环境统一无差异;
  2. 一次构建同时产出在线查阅网页 + 可交付客户的完整PDF;
  3. Nginx内置预览,写完文档一键本地查看完整手册效果;
  4. 适配十万字长文档,容器构建性能稳定,不会出现本地软件卡顿;
  5. 全配置文件托管,团队所有人拉取项目直接运行,开箱即用。
http://www.jsqmd.com/news/1015423/

相关文章:

  • 2026 昆明 10 家猫犬舍实测:伴西西稳居榜首,买宠避坑必看 - 同城宠物优选基地
  • 多模态模型入门:GPT-4V / Claude Vision 到底能做什么
  • Cesium加载GLB模型避坑指南:为什么你的模型位置不对、朝向歪了?
  • FPGA实战(12):FPGA实现复数乘法器:基于Xilinx IP核的高效设计(附源码)
  • 2026 西宁管道疏通与异味治理机构精选 5 家 马桶 / 厨卫下水 / 地漏除臭服务参考 - 宅安选房屋修缮
  • AccessGuard v0.4:组件化权限控制 — TypeScript React 泛型组件与 Props 类型深度实战
  • GitHub Actions 流水线注入敏感配置完整方案(Antora + Docker Compose)
  • HCIP面试别慌!这30道高频网络协议题,我帮你拆解透了(含OSI、TCP/IP、OSPF、BGP详解)
  • 2026沈阳茅台五粮液回收市场观察:如何避坑与高效变现? - 优质品牌商家
  • ArcMap启动卡死闪退?别急着重装!这5个亲测有效的修复方法帮你搞定(附详细步骤)
  • 2026南宁大宅高端定制实测:辉凡装饰如何以“高定半包”重构别墅装修性价比? - 一个呆呆
  • 2026年6月回购乌龟企业深度解析:为何广西大唐龟业成为养殖户 - 品牌鉴赏官2026
  • 从项目复盘到面试通关:我是如何用‘电源设计’项目拿下硬件Offer的
  • WPF DataGrid中的精细按钮控制
  • 逆向新手也能懂:拆解抖音SSL证书锁定的原理与三种破解姿势
  • 想进芯片公司?先搞懂AE、FAE、PE这些岗位到底干啥的(附职业发展建议)
  • Linux下MySQL启动踩坑记:一次由`--lower_case_table_names`参数引发的‘Permission denied’血泪史
  • 除了LeetCode,这些能写进简历的官方编程竞赛你知道几个?手把手教你从CCF-CSP认证到ICPC区域赛
  • 拆解华为OD机试B卷新题库:从‘星际篮球’到‘猜字谜’,150+题背后的算法考点与复习路线图
  • 解决上传超时问题:NativeScript HTTP的应用实例
  • 别再乱敲‘sa’了!手把手教你H3C IRF堆叠配置的正确保存与激活顺序
  • 2026年铁艺护栏行业品牌观察:从选型到落地的真实工程案例与供应商分析 - 优质品牌商家
  • 2026年沈阳名表回收市场格局解析:哪些机构值得关注? - 优质品牌商家
  • 用 AI 自动生成文章封面:我的真实工作流
  • 大专非科班拿下汇丰外包Java岗,我的IKM笔试180分钟地狱难度通关实录(附真题解析)
  • 洞察2026年当下评价高的吉安大平层设计服务商市场格局与优选指南 - 品牌鉴赏官2026
  • 地信/遥感专业转开发,面试官到底想听什么?——以天津测绘院24春招为例拆解求职策略
  • 【GEO优化实战】2026全域AI流量体系:向量知识库+意图预测模型在地推行业的落地架构
  • DIY四轴无人机硬件避坑指南:从MPU6050布线到电源模块设计的那些事儿
  • 告别黑屏!手把手教你用易至天工插件在ArcMap 10.8稳定加载谷歌影像(附离线文件加载技巧)