良好的文档是项目成功的关键。它不仅帮助开发者理解项目结构和代码逻辑,还是新团队成员快速上手的桥梁。MkDocs可以帮助我们构建出既美观又功能丰富的技术文档。
1、mkdocs简介
MkDocs 是一个快速、简单且功能丰富的静态站点生成器,专为项目文档设计。它允许你用 Markdown 编写文档,然后通过一个简洁的命令生成一个静态网站。MkDocs 的核心优势在于它的简洁性、速度和易于使用。
主要特点:
- 纯 Python 编写:不需要复杂的依赖关系。
- Markdown 支持:使用 Markdown 编写文档,易于阅读和编写。
- 静态站点生成:生成静态 HTML 页面,可以轻松部署到任何静态文件服务器或 CDN 上。
- 实时预览:开发时提供实时预览功能,所见即所得。
- 自定义主题:支持自定义主题,可以轻松定制文档的外观。
2、MkDocs-Material
MkDocs-Material 是 MkDocs 的一个非常受欢迎的主题,它基于 Google 的 Material Design。它不仅提供了一个现代、响应式的设计,还包含了许多增强功能,如搜索、版本切换和脚注等。
特点:
- 响应式设计:适配各种屏幕尺寸,无论是桌面还是移动设备。
- 内置搜索:提供快速、高效的搜索功能,方便用户查找文档内容。
- 版本切换:支持多版本文档,方便用户查看不同版本的信息。
- 丰富的组件:包括代码块、图表、表格等,丰富文档的表现力。
- 易于定制:通过 CSS 和 JavaScript 定制主题,满足个性化需求。
3、简单使用
在python环境中安装:
1 2
| pip install mkdocs pip install mkdocs-material
|
创建一个新的 MkDocs 项目目录,并初始化:
1 2 3
| mkdir my-project cd my-project mkdocs new .
|
运行以下命令生成文档:
这将在 site
目录下生成静态 HTML 文件。
要查看实时预览,运行:
现在,你可以在浏览器中访问 http://127.0.0.1:8000
查看你的文档。
4、配置文件
可以在mkdocs.yml中进行系统的配置。如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| site_name: 个人知识库 site_url: https://blog.agiexplained.com site_author: Eryx Lee docs_dir: .
theme: name: material palette: - scheme: default primary: grey accent: cyan toggle: icon: material/weather-night name: 切换至夜间模式 - scheme: slate primary: black accent: cyan toggle: icon: material/weather-sunny name: 切换至日间模式 features: - navigation.instant - navigation.tracking - navigation.tabs - navigation.top - search.suggest - search.highlight - navigation.expand - search.share language: zh
extra: generator: false social: - icon: fontawesome/brands/twitter link: https://twitter.com/ - icon: fontawesome/brands/github link: https://github.com/eryxlee - icon: fontawesome/brands/bilibili link: https:// - icon: fontawesome/solid/paper-plane link: mailto:<eryxlee@163.com>
plugins: - search - same-dir - awesome-pages - autorefs - exclude: glob: - .obsidian/* - "index*.html" - ".*" - "_*.md" - "*.tmp" - "*.pdf" - "*.gz" regex: - '.*\.(tmp|bin|tar)$'
markdown_extensions: - abbr - pymdownx.caret - pymdownx.mark - pymdownx.tilde - md_in_html - pymdownx.arithmatex: generic: true - toc: permalink: true - pymdownx.highlight: anchor_linenums: true linenums: true auto_title: true - pymdownx.inlinehilite - pymdownx.snippets - pymdownx.superfences - attr_list - pymdownx.emoji: emoji_index: !!python/name:material.extensions.emoji.twemoji emoji_generator: !!python/name:material.extensions.emoji.to_svg - pymdownx.superfences - meta
|
5、在Docker中使用
为了在Docker中运行MkDocs,需要从MkDocs-Material的Github上下载代码,使用其中已经准备好的Dockerfile。这个Dockerfile将会安装MkDocs、MkDocs-Material所需要的所有依赖包,并且预留了一个user-requirements.txt文件,其中可以填入自己所需要的第三方插件,如:
1 2 3 4
| mkdocs-same-dir~=0.1.3 mkdocs-autorefs~=1.2.0 mkdocs-exclude~=1.0.2 mkdocs-awesome-pages-plugin~=2.9.3
|
之后就可以使用Docker build命令编译适合自己的镜像了。
6、在k8s上运行
构建deployment、service文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| apiVersion: apps/v1 kind: Deployment metadata: name: mkdocs spec: selector: matchLabels: app: mkdocs replicas: 1 template: metadata: labels: app: mkdocs spec: containers: - name: mkdocs image: eryxlee0901/mkdocs:latest volumeMounts: - name: mkdocs-data mountPath: /docs ports: - containerPort: 8000 volumes: - name: mkdocs-data hostPath: path: /root/kb type: DirectoryOrCreate
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| kind: Service apiVersion: v1 metadata: name: mkdocs-service spec: selector: app: mkdocs ports: - protocol: TCP port: 8000 targetPort: 8000 nodePort: 30000 type: NodePort
|
然后就可以用http://(IP):30000进行站点访问了