使用 vitepress + docker + oneDrive 等实现本地知识库 预览+备份

简介: 使用 `语雀`、`notion` 等文档知识库,在使用起来比较方便,但是如果需要本地备份,就需要借助一些工具。本文介绍使用 本地预览框架 `vitepress` 和 同步网盘 `oneDrive` 来实现本地知识库 预览+备份。

1.简介

使用 语雀notion 等文档知识库,在使用起来比较方便,但是如果需要本地备份,就需要借助一些工具。本文介绍使用 本地预览框架 vitepress 和 同步网盘 oneDrive 来实现本地知识库 预览+备份。

2.自己实现一遍

2.1.初始化项目

2.1.1.创建项目

创建并进入目录,初始化 vitepress 项目。

mkdir local_wiki && cd local_wiki

2.1.2.创建 package.json

创建 package.josn 文件,并粘贴以下内容。

{
   
    "name": "local_wiki",
    "private": true,
    "scripts": {
   
        "docs:dev": "vitepress dev --host --port 10050"
    },
    "devDependencies": {
   
        "vitepress": "1.0.0-rc.29"
    }
}

2.1.3.初始化 pnpm-lock.yaml 文件

安装依赖,生成 pnpm-lock.yaml 文件。

pnpm install

2.2.配置 Docker 相关

2.2.1.创建 Dockerfile 文件

创建 Dockerfile 文件,并粘贴以下内容。

# 基础镜像
FROM node:16.15.0-alpine

# 创建 工作目录
WORKDIR /app

# copy 项目到镜像里
COPY . .

# 运行命令
RUN npm install -g pnpm && \
    pnpm install --frozen-lockfile

# 暴露端口
EXPOSE 5173

# 运行
CMD [ "npm", "run", "docs:dev" ]

2.2.2.创建 .dockerignore 文件

创建 .dockerignore 文件,并粘贴以下内容。

/.vitepress
/.git

/caches
/node_modules
/docs

2.3.构建本地镜像

终端运行以下命令。

docker build -t local_wiki:local -f ./Dockerfile .

2.4.运行镜像

2.4.1.了解配置路径

如果电脑有 iCloudoneDrive 等同步网盘,可以把 projectHostDocsDirprojectHostConfigDir 替换成同步目录。如果不需要备份,那就把 2 个配置改成自定义路径即可。

例如:

  • projectHostDocsDir => /Users/pocky/iCloud 云盘(归档)/local_wiki/docs
  • projectHostConfigDir => /Users/pocky/iCloud 云盘(归档)/local_wiki/config

2.4.2.创建 vitepress 配置文件

先去创建 projectHostConfigDir 这个预设目录,然后再到 local_wiki/config 目录里创建 config.mts 文件,并粘贴以下内容。

import {
    defineConfig } from "vitepress";

// https://vitepress.dev/reference/site-config
export default defineConfig({
   
    title: "本地文档",
    description: "本地文档知识库",
    srcDir: "./docs",
    cacheDir: "./caches",
    themeConfig: {
   
        search: {
   
            provider: "local",
        },
    },
});

2.4.3.创建 docs 目录

同上,也创建 projectHostDocsDir 这个预设目录,然后再到 local_wiki/docs 目录里创建一个 index.md 文件。

# 这是一个 md 文件

2.4.4.运行 docker 镜像

把以下的 projectHostDocsDirprojectHostConfigDir 变量改成自己的预设路径后,去终端运行此命令。

#!/bin/sh

# 镜像信息
dockerImageName=local_wiki
dockerImageVersion=local

# 运行后的容器信息
dockerContaimerName=L_local_wiki

# 端口
dockerHostPort=10050
dockerContainerPort=10050

# 文档目录映射配置
projectHostDocsDir=/XXXXXXXXXXXXXXX/local_wiki/docs
projectContainerDocsDir=/app/docs

# 配置目录映射配置
projectHostConfigDir=/XXXXXXXXXXXXXXX/local_wiki/config
projectContainerConfigDir=/app/.vitepress

# ====================

# 运行脚本
runShell(){
    # 停止并删除容器
    docker container stop $dockerContaimerName; \
    docker container rm $dockerContaimerName; \

    # 生成容器
    docker run -itd \
        --name=$dockerContaimerName \
        -p $dockerHostPort:$dockerContainerPort \
        -v $projectHostDocsDir:$projectContainerDocsDir \
        -v $projectHostConfigDir:$projectContainerConfigDir \
        $dockerImageName:$dockerImageVersion
}

runShell

3.或直接使用封装好的镜像

目录配置请看 2.4.运行镜像

终端运行以下命令。

#!/bin/sh

# 镜像信息
dockerImageName=pocky2460392754/vitepress_local_wiki
dockerImageVersion=1.0.0

# 运行后的容器信息
dockerContaimerName=vitepress_local_wiki

# 端口
dockerHostPort=10050
dockerContainerPort=10050

# 文档目录映射配置
projectHostDocsDir=/XXXXXXXXXXXXXXX/local_wiki/docs
projectContainerDocsDir=/app/docs

# 配置目录映射配置
projectHostConfigDir=/XXXXXXXXXXXXXXX/local_wiki/config
projectContainerConfigDir=/app/.vitepress

# ====================

# 运行脚本
runShell(){
    # 停止并删除容器
    docker container stop $dockerContaimerName; \
    docker container rm $dockerContaimerName; \

    # 生成容器
    docker run -itd \
        --name=$dockerContaimerName \
        -p $dockerHostPort:$dockerContainerPort \
        -v $projectHostDocsDir:$projectContainerDocsDir \
        -v $projectHostConfigDir:$projectContainerConfigDir \
        $dockerImageName:$dockerImageVersion
}

runShell

4.查看效果

浏览器输入 http://localhost:10050 地址,修改 index.md 文件查看效果。

5.总结

语雀 迁移到 notion, 再从 notion 迁移到 本地, 或许 本地+网盘同步 才是最好的选择。

6.博客原文

https://www.965.ink/archives/1701055919322

目录
相关文章
|
Docker 容器
docker备份容器到本地(以及恢复)
docker备份容器到本地(以及恢复)
1047 0
|
Cloud Native Docker 容器
云原生之使用Docker部署Affine知识库工具
云原生之使用Docker部署Affine知识库工具
2073 0
|
存储 Ubuntu Shell
Docker镜像与容器备份迁移(export、import与commit、save、load)
Docker镜像与容器备份迁移(export、import与commit、save、load)
2413 0
|
存储 Shell 网络安全
docker 安装gitlab,配置邮件,备份全流程
docker 安装gitlab,配置邮件,备份全流程
622 0
docker 安装gitlab,配置邮件,备份全流程
|
SQL 关系型数据库 MySQL
docker上定期备份mysql数据库
本文是博主学习docker的记录,希望对大家有所帮助。
1349 0
|
关系型数据库 MySQL 应用服务中间件
Docker容器的数据卷备份与恢复
Docker容器的数据卷备份与恢复
199 0
|
6月前
|
存储 安全 数据安全/隐私保护
【Docker 专栏】Docker 容器化应用的备份与恢复策略
【5月更文挑战第9天】本文探讨了Docker容器化应用的备份与恢复策略,强调了备份在数据保护、业务连续性和合规要求中的关键作用。内容涵盖备份的重要性、内容及方法,推荐了Docker自带工具和第三方工具如Portainer、Velero。制定了备份策略,包括频率、存储位置和保留期限,并详细阐述了恢复流程及注意事项。文章还提及案例分析和未来发展趋势,强调了随着技术发展,备份与恢复策略将持续演进,以应对数字化时代的挑战。
286 1
【Docker 专栏】Docker 容器化应用的备份与恢复策略
|
6月前
|
存储 网络安全 数据安全/隐私保护
docker 安装gitlab,配置邮件,备份全流程
docker 安装gitlab,配置邮件,备份全流程
241 0
|
3月前
|
JavaScript 前端开发 Shell
使用vitepress搭建自己的静态个人博客 || 个人知识库
使用vitepress搭建自己的静态个人博客 || 个人知识库
67 0
|
6月前
|
存储 Linux 测试技术
【Docker项目实战】使用Docker部署Raneto知识库平台
【2月更文挑战第11天】使用Docker部署Raneto知识库平台
209 2
【Docker项目实战】使用Docker部署Raneto知识库平台