第2篇【Docker项目实战】使用Docker部署Raneto知识库平台(转载)
【Docker项目实战】使用Docker部署Raneto知识库平台
一、Raneto介绍
1.1 Raneto简介
Raneto是一个免费、开放、简单的 Markdown 支持的 Node.js 知识库。
1.2 知识库介绍
- 知识库
知识库是指存储和组织知识的系统或库,它包括了各种类型的信息和知识,如文本、图像、音频、视频等。知识库可以用于存储和检索知识,帮助人们获取特定领域的知识和解决问题。知识库通常由专业人员创建和维护,他们通过收集和整理各种资源和信息来构建一个完整的知识库。知识库可以包含大量的知识和信息,涵盖多个领域和主题。知识库可以用于多种用途,例如教育、研究、咨询等。它可以为学生提供学习资料和参考文献,为研究人员提供相关领域的最新研究成果,为咨询师提供解决问题的指导。知识库的优势在于它能够集中存储和组织大量的知识和信息,使其易于访问和使用。此外,知识库还可以通过搜索和过滤功能来帮助用户快速找到所需的知识和信息。
- 知识库工具
知识库工具是一种用于收集、组织、存储和检索知识的软件工具。它们提供了一个集中的平台,可以方便地创建、记录和共享知识,以便团队成员或用户可以随时访问和使用。
二、本地环境介绍
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为centos7.6。
| hostname | IP地址 | 操作系统版本 | Docker版本 |
|---|---|---|---|
| dokcer | 192.168.3.166 | centos 7.6 | 2 20.10.17 |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎; 2.本次实践需要提前在自己服务器上配置好Docker环境,确保Docker环境正常; 3.在Docker环境下部署Raneto知识库平台。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)Active: active (running) since Fri 2023-12-01 22:00:49 CST; 3 days agoDocs: https://docs.docker.comMain PID: 11506 (dockerd)Tasks: 10Memory: 935.8MCGroup: /system.slice/docker.service└─11506 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
3.2 检查Docker版本
检查Docker版本
[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
[root@jeven ~]# docker compose version
Docker Compose version v2.6.01.2.
四、下载Raneto镜像
从docker hub拉取Raneto镜像,版本为latest镜像。如果镜像拉取缓慢,则可以配置国内云厂商的容器镜像加速,提高下载速度。
[root@jeven ~]# docker pull raneto/raneto:latest
latest: Pulling from raneto/raneto
7264a8db6415: Pull complete
d68f2f1a5d31: Pull complete
e7e6b7606c1a: Pull complete
904e9a84b7a0: Pull complete
88e752eeee15: Pull complete
14e927c1dd9e: Pull complete
a3e1caebe52b: Pull complete
Digest: sha256:ed0d2d846ed6239791d67bbe0420c6fa2c7a8d2e2d5d30d17fb726e77c9dd576
Status: Downloaded newer image for raneto/raneto:latest
docker.io/raneto/raneto:latest
五、部署Raneto知识库平台
5.1 创建挂载目录
创建挂载目录/data/raneto/
mkdir -p /data/raneto/{config,content} && cd /data/raneto
设置目录权限
chmod -R 777 /data/raneto
5.2 编辑config.js文件
Raneto的配置文件为config.js,在我们新建 /data/raneto/config目录下,编辑config.js文件。
// Modules
var path = require('path');// Which Theme to Use?
//
// Local Directory Example (for development or custom themes)
// var theme_dir = path.join(__dirname, 'themes');
// var theme_name = 'my-theme-directory';
//
// Themes from NPM
// use "dist" as the theme name for modules (for now)
var theme_dir = path.join(__dirname,'..','node_modules','@raneto/theme-default'
);
var theme_name = 'dist';var config = {// Your site title (format: page_title - site_title)site_title: 'Raneto Docs',// The base URL of your site (can use %base_url% in Markdown files)// This should be the full path to your Raneto installation:// example 1: https://raneto.mydomain.com// example 2: https://www.mydomain.com/raneto// Do not include a trailing "/"// Leave this as an empty string to use the defaultbase_url: '',nowrap: true,// Path Prefix// If you are running Raneto on a subpath of your domain, add it here// Leave it blank if you are not sure//// Example: if you are running Raneto at http://www.mydomain.com/raneto// then you would enter '/raneto' belowpath_prefix: '',// Used for the "Get in touch" page footer linksupport_email: '',// Footer Text / Copyrightcopyright: `Copyright © ${new Date().getFullYear()} - <a href="https://raneto.com">Powered by Raneto</a>`,// Excerpt length (used in search)excerpt_length: 400,// The meta value by which to sort pages (value should be an integer)// If this option is blank pages will be sorted alphabeticallypage_sort_meta: 'sort',// Should categories be sorted numerically (true) or alphabetically (false)// If true category folders need to contain a "sort" file with an integer valuecategory_sort: true,// Controls behavior of home page if meta ShowOnHome is not present. If set to true// all categories or files that do not specify ShowOnHome meta property will be shownshow_on_home_default: true,// Theme (see top of file)theme_dir,theme_name,// Specify the path of your content folder where all your '.md' files are located// Fix: Cannot be an absolute pathcontent_dir: path.join(__dirname, '..', 'content', 'pages'),// Where is the public directory or document root?public_dir: path.join(theme_dir, theme_name, 'public'),// The base URL of your images folder,// Relative to config.public_dir// (can use %image_url% in Markdown files)image_url: '/images',// Add your analytics tracking code (including script tags)analytics: '',// Set to true to enable the web editorallow_editing: true,// Set to true to enable HTTP Basic Authenticationauthentication: true,// If editing is enabled, set this to true to only authenticate for editing, not for viewingauthentication_for_edit: true,// If authentication is enabled, set this to true to enable authentication for reading tooauthentication_for_read: false,// Google OAuthgoogleoauth: false,google_group_restriction: {enabled: false,api_key: 'GOOGLE_API_KEY',group_name: 'GOOGLE_GROUP_NAME',},oauth2: {client_id: 'GOOGLE_CLIENT_ID',client_secret: 'GOOGLE_CLIENT_SECRET',callback: 'http://localhost:3000/auth/google/callback',hostedDomain: 'google.com',},secret: 'someCoolSecretRightHere',// ##### WARNING #####// You MUST change the username and password for security// Do NOT use "admin" as a username as it's easily guessed.// You are encouraged to use tools to generate a password// Preferably, use a local password manager// If you absolutely must use an online tool, here are some suggestions// https://bitwarden.com/password-generator/// https://www.grc.com/passwords.htmcredentials: [{username: 'admin',password: 'password',},{username: 'admin2',password: 'password',},],locale: 'zh',// Support search with extra languagessearchExtraLanguages: ['zh'],// Sets the format for datetime'sdatetime_format: 'Do MMM YYYY',// Set to true to render suitable layout for RTL languagesrtl_layout: false,// Edit Home Page title, description, etc.home_meta: {// title : 'Custom Home Title',// description : 'Custom Home Description'},// variables: [// {// name: 'test_variable',// content: 'test variable'// },// {// name: 'test_variable_2',// content: 'test variable 2'// }// ]// Set to true to enable generation of table of contentstable_of_contents: false,// Configure generation of table of contents (see markdown-toc's docs for details on available options)table_of_contents_options: {// append: 'Table of contents appendix',// maxdepth: 6,// firsth1: true,},menu_on_pages: true,menu_on_page_collapsible: true,
};// Exports
module.exports = config;
在config.js文件中,可以自行修改三个地方:
- 站点名称
site_title: 'Raneto Docs',
- 用户名和密码
credentials: [{username: 'admin',password: 'password',},{username: 'admin2',password: 'password',},],
- 支持中文语言
locale: 'zh',// Support search with extra languagessearchExtraLanguages: ['zh'],
5.3 编辑docker-compose.yaml文件
新建raneto容器的docker-compose.yaml部署文件,内容如下:
version: "3.6"services:raneto:image: raneto/raneto:latestcontainer_name: ranetorestart: alwaysports:- 7860:3000volumes:- /data/raneto/config:/opt/raneto/config- /data/raneto/content:/opt/raneto/content
5.4 创建raneto容器
使用docker-compose.yaml文件创建raneto容器
[root@jeven raneto]# docker compose up -d
[+] Running 2/2⠿ Network raneto_default Created 0.1s⠿ Container raneto Started 0.5s
5.5 检查raneto容器状态
检查raneto容器状态,确保raneto容器正常启动。
[root@jeven raneto]# docker compose ps
NAME COMMAND SERVICE STATUS PORTS
raneto "docker-entrypoint.s…" raneto running 0.0.0.0:7860->3000/tcp, :::7860->3000/tcp1.2.3.
5.6 检查raneto容器日志
检查raneto容器日志,确保raneto服务正常运行。
[root@jeven raneto]# docker compose logs
raneto |
raneto | > raneto@0.17.6 start
raneto | > DEBUG=raneto node server.js
raneto |
raneto | 2023-12-05T09:06:05.706Z raneto Express HTTP server listening on port 3000

六、Raneto的基本使用
6.1 访问Raneto首页
访问地址:** http://192.168.3.166:7860/,将IP换为自己服务器IP地址,进入到Raneto首页。

6.2 登录Raneto
使用默认的密码admin/password,登录Raneto。


6.3 上传文档
将md格式文件上传到宿主机的/data/raneto/content/pages目录下,刷新页面即可。
[root@jeven pages]# pwd
/data/raneto/content/pages
[root@jeven pages]# ls
Linux系统之ls命令的基本使用.md


6.4 新建页面目录
在宿主机的/data/raneto/content/pages目录下,新建Linux技术目录。
[root@jeven pages]# mkdir Linux技术
[root@jeven pages]# ls
Linux技术 Linux系统之ls命令的基本使用.md
重新刷新页面后,可以看到Linux技术目录。

七、总结
Raneto是一款简单高效的开源知识库工具,帮助我们整理知识文档和构建知识体系。它具有简洁直观的界面,可以轻松对文档进行分组管理。而且,它还提供了友好的Markdown支持,让我们能够以更加方便的编写和浏览技术文档。如果你正在寻找一个简单易用的知识库工具,那么Raneto是值得一试的选择。
相关文章:
第2篇【Docker项目实战】使用Docker部署Raneto知识库平台(转载)
【Docker项目实战】使用Docker部署Raneto知识库平台 一、Raneto介绍 1.1 Raneto简介 Raneto是一个免费、开放、简单的 Markdown 支持的 Node.js 知识库。 1.2 知识库介绍 知识库 知识库是指存储和组织知识的系统或库,它包括了各种类型的信息和知识,如…...
【Javascript】 Promise 对象(二)
【Javascript】 Promise 对象(一)-CSDN博客 Promise.all() Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。 const p Promise.all([p1, p2, p3]);上面代码中,Promise.all()方法接受一个数组作为参数&…...
细说C++反向迭代器:原理与用法
文章目录 一、引言二、反向迭代器的原理与实现细节三、模拟实现C反向迭代器反向迭代器模板类的设计反向迭代器的使用示例与测试 一、引言 迭代器与反向迭代器的概念引入 迭代器(Iterator)是C标准模板库(STL)中的一个核心概念&am…...
SpringBoot(依赖管理和自动配置)
文章目录 1.基本介绍1.springboot是什么?2.快速入门1.需求分析2.环境配置1.确认开发环境2.创建一个maven项目3.依赖配置 pom.xml4.文件目录5.MainApp.java (启动类,常规配置)6.HelloController.java (测试Controller&a…...
cad怎么转换成黑白的pdf图纸?分享3个常用的软件!
在工程设计、建筑、机械制造等领域,CAD图纸的应用非常广泛。然而,有时出于某些需要,我们可能需要将CAD图纸转换为黑白的PDF格式。那么,如何实现这一转换呢?本文将为您详细介绍几种常用的转换软件及其操作步骤。 迅捷CA…...
maven本地仓库依赖上传到远程仓库
本地仓库上传到远程仓库 批量上传: 批量本地仓库依赖(jar包)上传脚本: #!/bin/bash # copy and run this script to the root of the repository directory containing files # this script attempts to exclude uploading itse…...
ISIS多区域实验简述
为支持大型路由网络,IS-IS在路由域内采用两级分层结构。 IS-IS网络中三种级别的路由设备:将Level-1路由设备部署在区域内,Level-2路由设备部署在区域间,Level-1-2路由设备部署在Level-1和Level-2路由设备的中间。 实验拓扑图&…...
go语言基础笔记
1.基本类型 1.1. 基本类型 bool int: int8, int16, int32(rune), int64 uint: uint8(byte), uint16, uint32, uint64 float32, float64 string 复数:complex64, complex128 复数有实部和虚部,complex64的实部和虚部为32位,complex128的实部…...
kettle 9.4和Pentoho 9.4下载及安装方法简介
kettle 9.4和Pentoho 9.4下载及安装方法简介 下载地址: https://sourceforge.net/projects/pentaho/files/ 下载步骤: #------------- 一、点击选项卡:summary/ 二、点击第一行链接 https://www.hitachivantara.com/en-us/products/pentaho…...
社交革命的引领者:探索Facebook如何改变我们的生活方式
1.数字社交的兴起 随着互联网的普及,社交媒体成为我们日常生活的重要组成部分。Facebook作为其中的先驱,从最初的社交网络演变成了一个拥有数十亿用户的全球化平台。它不仅改变了我们与世界互动的方式,还深刻影响了我们的社交习惯、人际关系以…...
常用的推荐算法
推荐系统在帮助用户发现可能感兴趣的产品、服务或信息方面发挥着重要作用。下面是一些常用的推荐算法: 1. 协同过滤 用户基于协同过滤(User-Based Collaborative Filtering) 基于用户之间的相似性为用户推荐物品。算法会找出与目标用户兴趣…...
使用Python进行图片格式转化/分辨率转化
一.下载python PIY插件库 PIP下载命令: pip install pillow -i https://mirrors.aliyun.com/pypi/simple PIY插件库:pillow Installation - Pillow (PIL Fork) 10.3.0.dev0 documentation 二.分辨率转化 from PIL import Image import osresolution (1024, 1024) with Image…...
植物神经功能紊乱患者每天从5片黛力新减少至2片,只因找对了治疗方法!
植物神经功能紊乱是一种常见的心理疾病,其症状包括焦虑、失眠、疲劳、头痛、胃肠不适等,给患者带来很大的困扰。然而,这种疾病是可以治疗的。本文将介绍一位植物神经功能紊乱患者的治疗经历,希望能够帮助更多的人了解和治疗此病。…...
SpringSecurity 快速入门
文章目录 1. 认证授权概述1.1 认证授权概念1.1.1 认证1.1.2 授权 1.2 权限数据模型1.3 RBAC权限模型1.3.1 介绍1.3.2 基于角色访问控制1.3.3 基于资源访问控制 1.4 常见认证方式1.4.1 Cookie-Session1.4.2 jwt令牌无状态认证 1.5 技术实现 2. SpringSecurity入门2.1 介绍2.2 入…...
MySQL--执行一条 select 语句,期间发生了什么?
执行一条 SQL 查询语句,期间发生了什么? 连接器:建立连接,管理连接、校验用户身份;查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;解析 …...
DeepL:word文档导出后不能编辑
参考解决用DeepL翻译文档后不能编辑问题_deepl翻译出来的文档怎么编辑-CSDN博客 1、将deepL导出的word文档另存为.xml文件 2、将.xml文件以txt格式打开,查找内容:<w:documentProtection,删除整个标签(包括<w: ...>&…...
PCL 约束Delaunay三角网(版本二)
目录 一、算法概述二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法概述 PCL 点云Delaunay三角剖分一文给出了PCL中Delaunay三角网算法的基础用法。本文在基础用法的基…...
位运算#蓝桥杯
位运算#蓝桥杯 文章目录 位运算#蓝桥杯1、小蓝学位运算2、异或森林3、位移4、笨笨的机器人5、博弈论 1、小蓝学位运算 #include<bits/stdc.h> using namespace std; using LL long long; const LL N 1e97; template<int kcz> struct ModInt { #define T (*this)…...
Python yield from
yield from是Python生成器(generator)中的一个语法,用于简化生成器的操作。它可以使一个生成器委托部分操作给另一个生成器,从而简化代码。yield from在Python 3.3及更高版本中被引入。 在使用yield from之前,我们需要…...
Atcoder TUPC 2023(東北大学プログラミングコンテスト 2023)E. And DNA(矩阵快速幂+拆位讨论)
题目 长为n(3<n<1e9)的数组,第i个数ai在[0,m](m<1e9)之间 对于i∈[1,n],均满足a[i](a[i-1]&a[i1])m,求这样可能的数组的方案数 特别地,认为a[0]a[n],a[n1]a[1],即这个数组是个环形的数组 思路来源 官…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
