本项目提供了一个基于 Docker 的 Docsify 环境,基于 stilleshan/docsify 镜像修改而成,新增了右侧标题栏插件,使用左边文件名+右边标题的布局,支持通过 Git Webhook 自动更新文档内容并重新生成侧边栏。
listener.js 脚本监听来自 Gitea (或其他兼容 Git 服务) 的 Webhook push 事件。push 事件。generate-sidebar.js 脚本在 Git 拉取成功后自动运行,根据 /docs 目录下的 Markdown 文件结构生成 _sidebar.md。ENABLE_GIT (默认为 true) 控制是否启用 Git 相关功能(初始化、拉取、Webhook 监听)。/docs 目录为空,会自动初始化 Git 仓库,添加远程源 (由 GIT_REMOTE_URL 指定),并拉取指定分支 (由 GIT_BRANCH 指定) 的内容。docsify-plugin-toc: 右侧目录导航。docsify-count: 字数统计。emoji.min.js: Emoji 支持。zoom-image.min.js: 图片缩放。docsify-copy-code: 代码块复制按钮。index.html 中的自定义脚本会美化侧边栏顶部的 Logo 和站点名称显示。/docs 目录中缺少核心 Docsify 文件(如 index.html, _sidebar.md, README.md, generate-sidebar.js, .nojekyll),会从镜像中复制默认版本。.
├── Dockerfile # Docker 镜像构建文件
├── entrypoint.sh # 容器入口脚本,处理初始化和启动服务
├── generate-sidebar.js # Node.js 脚本,用于生成 _sidebar.md
├── listener.js # Node.js 脚本,Webhook 监听服务
├── index.html # Docsify 主 HTML 文件和配置
├── _sidebar.md # Docsify 侧边栏文件 (由 generate-sidebar.js 生成)
├── README.md # 本 README 文件
└── icon.svg # 站点图标
因为本地网络问题无法获取到源镜像
stilleshan/docsify的元数据,所以将dockerhub同步到github的ghcr仓库以继续进行(ghcr.io/sqing33/docsify-stilleshan)
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t sqing33/docsify:latest \
-t ghcr.io/sqing33/docsify:latest \
--push .
你需要根据你的需求配置以下环境变量:
DOCSIFY_PORT: Docsify 服务监听的端口 (默认为 6158)。ENABLE_GIT: 是否启用 Git 功能 (默认为 true)。WEBHOOK_PORT: Webhook 监听器监听的端口 (默认为 6159)。WEBHOOK_SECRET: 用于验证 Webhook 签名的密钥。GIT_REMOTE_URL: 你的 Git 仓库的 URL (例如: https://gitea.example.com/user/repo.git)。GIT_REMOTE: Git 远程仓库的名称 (默认为 origin)。GIT_BRANCH: 你希望拉取和监听的分支 (默认为 main)。挂载容器内的 /docs 目录,以便于持久化存储文档内容。
示例 docker run 命令:
docker run -d \
--name docsify \
-p 6158:6158 \
-p 6159:6159 \
-e DOCSIFY_PORT=6158 \
-e ENABLE_GIT="true" \
-e WEBHOOK_PORT=6159 \
-e WEBHOOK_SECRET=YOUR_WEBHOOK_SECRET \
-e GIT_REMOTE_URL=YOUR_GIT_REPO_URL \
-e GIT_REMOTE=origin \
-e GIT_BRANCH=main \
-e DOCS_DIR=/docs \
-v /vol1/1000/Docker/docsify/docs:/docs \
--restart unless-stopped \
ghcr.io/sqing33/docsify:latest
示例 docker-compose.yml 文件:
services:
docsify:
image: ghcr.io/sqing33/docsify:latest
container_name: docsify
ports:
# Docsify 服务器端口映射
- "6158:6158"
# Webhook 监听器端口映射,listener.js 在容器内部监听 6159 端口
- "6159:6159"
environment:
# Docsify 服务端口
- DOCSIFY_PORT=6158
# 是否启用 Git 更新
- ENABLE_GIT="true"
# WEBHOOK_PORT 监听端口
- WEBHOOK_PORT=6159
# Webhook 验证密钥
- WEBHOOK_SECRET=YOUR_WEBHOOK_SECRET
# Git 远程仓库的 URL,用于 entrypoint 中的 git remote add origin
- GIT_REMOTE_URL=YOUR_GIT_REPO_URL
# Git 远程源的名称,用于 listener.js 中的 git pull
- GIT_REMOTE=origin # 通常是 origin,如果你的仓库不是则修改
# Git 分支名称,用于 listener.js 中的 git pull 和事件判断
- GIT_BRANCH=main
- DOCS_DIR=/docs # 默认 /docs ,这应与卷挂载点匹配
volumes:
# 将宿主机目录挂载到容器内的 /docs
- '/vol1/1000/Docker/docsify/docs:/docs'
# 可选:重启策略
restart: unless-stopped
Content type
Image
Digest
sha256:c7ca9f01d…
Size
55 MB
Last updated
over 1 year ago
docker pull sqing33/docsify