【打工日常】云原生之使用Docker部署开源云笔记工具Leanote

news2024/11/17 9:55:02

一、Leanote蚂蚁笔记介绍

1.Leanote简介

Leanote 蚂蚁笔记是一款国产开源的私有云笔记工具。它支持普通格式笔记、Markdown语法、专业数学公式编辑、和思维导图,并且支持vim&emacs等编辑模式。

2.Leanote功能

拥有Markdown 语法支持、无干扰写作模式、Vim和Emacs编辑模式、将笔记导出为 PDF、可批注操作,具备可定制的博客主题,具备基础的思维导图功能,能用Docker快速本地化部署。

二、本次实践介绍

1. 本次实践简介

a.本次实践部署环境为个人笔记本ubuntu日常工作的测试环境,若是生产环境请谨慎部署;

b.本次实践为快速使用docker部署开源Leanote蚂蚁笔记于个人ubuntu上,若是需要部署在个人的服务环境也可以作为参考;正式的环境需要控制好网络策略,以及使用dockerfile去创建独立的环境,做好挂载文件的定时备份和docker日志清理,使用轻量级或者某个节点去监控对应的应用和资源。

2. 本地环境规划

本次实践环境规划:下载镜像leanote/leanote:latest,通过docker-cli或者docker compose启动容器

镜像命名IP地址容器镜像版本操作系统版本
leanotelocalhostlatestubuntu 22.04

三、检查本地Docker环境

1. 检查本地Docker版本

检查Docker版本:docker version  
  
root@WellDone:/home/goodjob# docker version  
Client: Docker Engine - Community  
 Version:           25.0.0  
 API version:       1.44  
 Go version:        go1.21.6  
 Git commit:        e758fe5  
 Built:             Thu Jan 18 17:09:49 2024  
 OS/Arch:           linux/amd64  
 Context:           default  
  
Server: Docker Engine - Community  
 Engine:  
  Version:          25.0.0  
  API version:      1.44 (minimum version 1.24)  
  Go version:       go1.21.6  
  Git commit:       615dfdf  
  Built:            Thu Jan 18 17:09:49 2024  
  OS/Arch:          linux/amd64  
  Experimental:     false  
 containerd:  
  Version:          1.6.27  
  GitCommit:        a1496014c916f9e62104b33d1bb5bd03b0858e59  
 runc:  
  Version:          1.1.11  
  GitCommit:        v1.1.11-0-g4bccb38  
 docker-init:  
  Version:          0.19.0  
  GitCommit:        de40ad0  
root@WellDone:/home/goodjob#

2. 检查Docker服务状态

检查Docker服务状态,确保Docker服务正常运行。

systemctl status docker  
  
root@WellDone:/home/goodjob/Downloads# systemctl status docker  
● docker.service - Docker Application Container Engine  
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)  
     Active: active (running) since Wed 2024-01-24 08:54:31 CST; 1 day 4h ago  
TriggeredBy: ● docker.socket  
       Docs: https://docs.docker.com  
   Main PID: 1549 (dockerd)  
      Tasks: 65  
     Memory: 419.5M  
        CPU: 38.874s  
     CGroup: /system.slice/docker.service  
             ├─  1549 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock  
             ├─  2010 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 6379 -container-ip 172.17.0.2 -container-port 6379  
             ├─  2016 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 6379 -container-ip 172.17.0.2 -container-port 6379  
             ├─  2029 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5432 -container-ip 172.17.0.3 -container-port 5432  
             ├─  2036 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 5432 -container-ip 172.17.0.3 -container-port 5432  
             ├─123083 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8888 -container-ip 172.17.0.4 -container-port 8080  
             └─123095 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8888 -container-ip 172.17.0.4 -container-port 8080  
  
1月 24 08:54:31 WellDone dockerd[1549]: time="2024-01-24T08:54:31.067895045+08:00" level=info msg="API listen on /run/docker.sock"  
1月 24 08:54:31 WellDone systemd[1]: Started Docker Application Container Engine.  
1月 24 16:13:48 WellDone dockerd[1549]: time="2024-01-24T16:13:48.185008219+08:00" level=info msg="ignoring event" container=8ad99af82d8a41dd661d>  
1月 24 16:13:48 WellDone dockerd[1549]: time="2024-01-24T16:13:48.189484205+08:00" level=warning msg="ShouldRestart failed, container will not be>  
1月 24 21:58:08 WellDone dockerd[1549]: time="2024-01-24T21:58:08.024915139+08:00" level=info msg="ignoring event" container=27fd28e2993f31b170b8>  
1月 24 21:58:08 WellDone dockerd[1549]: time="2024-01-24T21:58:08.029986730+08:00" level=warning msg="ShouldRestart failed, container will not be>  
1月 25 10:46:16 WellDone dockerd[1549]: time="2024-01-25T10:46:16.329180722+08:00" level=info msg="Container failed to exit within 10s of signal >  
1月 25 10:46:16 WellDone dockerd[1549]: time="2024-01-25T10:46:16.350757439+08:00" level=info msg="ignoring event" container=b1223add00f36bbb3246>  
1月 25 10:49:21 WellDone dockerd[1549]: time="2024-01-25T10:49:21.993755983+08:00" level=info msg="Container failed to exit within 10s of signal >  
1月 25 10:49:22 WellDone dockerd[1549]: time="2024-01-25T10:49:22.015822650+08:00" level=info msg="ignoring event" container=edb0e153b45dbe62acd8>  
lines 1-28/28 (END)

四、下载Leanote镜像

1.下载Leanote镜像

root@HEJIAJIN-FX506HE:/home/welldone# docker pull axboy/leanote
Using default tag: latest
latest: Pulling from axboy/leanote
23884877105a: Pull complete 
bc38caa0f5b9: Pull complete 
2910811b6c42: Pull complete 
36505266dcc6: Pull complete 
a4d269900d94: Pull complete 
5e2526abb80a: Pull complete 
d3eece1f39ec: Pull complete 
358ed78d3204: Pull complete 
1a878b8604ae: Pull complete 
978c572f0440: Pull complete 
35a600ffcf6a: Pull complete 
fa9f812cdfe6: Pull complete 
7a8109e27110: Pull complete 
e7cb12a43d53: Pull complete 
98477f6eb1fd: Pull complete 
Digest: sha256:9542a462043c9d293e8eda12e1b48ada77ae411121583631c5fa94083a730ef5
Status: Downloaded newer image for axboy/leanote:latest
docker.io/axboy/leanote:latest

2.创建数据目录
创建Leanote容器挂载的数据目录

root@HEJIAJIN-FX506HE:/docker-compose# mkdir -p /docker-compose/leanote/{db,conf,files,upload}

root@HEJIAJIN-FX506HE:/docker-compose# tree leanote/
leanote/
├── conf
├── db
├── files
└── upload

4 directories, 0 files

3.创建Leanote容器
使用docker-cli命令快速创建Leanote容器。

docker run -d -p 9898:9000 \
    -e "TZ=Asia/Shanghai"\
    --restart=always
    -v /docker-compose/leanote/db:/data/db \
    -v /docker-compose/leanote/conf/:/data/leanote/conf \
    -v /docker-compose/leanote/files:/data/leanote/files \
    -v /docker-compose/leanote/upload:/data/leanote/public/upload \
    --name leanote \
    axboy/leanote
    
4.使用docker-compose启动一个zyplayer-doc的容器  

version: '3.9'
services:
    leanote:
        image: axboy/leanote
        container_name: leanote
        volumes:
            - '/docker-compose/leanote/upload:/data/leanote/public/upload'
            - '/docker-compose/leanote/files:/data/leanote/files'
            - '/docker-compose/leanote/conf/:/data/leanote/conf'
            - '/docker-compose/leanote/db:/data/db'
        restart: always
        environment:
            - TZ=Asia/Shanghai
        ports:
            - '9898:9000'


5.查看Leanote容器状态

root@HEJIAJIN-FX506HE:/docker-compose/docker-compose/docker-test# docker ps
CONTAINER ID   IMAGE                                                              COMMAND                   CREATED              STATUS                    PORTS                                                      NAMES
a8ac4caf9d3b   axboy/leanote                                                      "docker-entrypoint.s…"   About a minute ago   Up About a minute         27017/tcp, 0.0.0.0:9898->9000/tcp, :::9898->9000/tcp       leanote

6.查看Leanote占用资源

检查Leanote容器所在系统资源。

root@HEJIAJIN-FX506HE:/docker-compose/docker-compose/docker-test# docker stats --no-stream leanote
CONTAINER ID   NAME      CPU %     MEM USAGE / LIMIT     MEM %     NET I/O          BLOCK I/O     PIDS
a8ac4caf9d3b   leanote   0.17%     95.86MiB / 15.35GiB   0.61%     87.8kB / 853kB   0B / 73.9MB   57

六、访问Leanote首页

访问地址http://localhost:9898/
1.首页:

2.选择语言为简体中文

3.登录Leanote
管理员账号admin, 密码abc123

4.新建笔记

5. 后台管理

6. 设置笔记为公开博客

7. 查看个人博客页面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1619869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

值传递和地址传递

文章目录 目录值传递地址传递 目录 值传递 package com.zhang.parameter; //值传递 public class MethodDemo1 {public static void main(String[] args) {int a 10;System.out.println(a);System.out.println("~~~~~~~~~~~~~~~");change(a);//无论你传入的是什么 …

el-select下拉框远程搜索且多选时,编辑需要回显的一个简单案例

前端业务开发中不管使用vue2~3,还是react,angular各种前端技术栈,经常会遇到这种业务。一个下拉框Select中,不仅需要需要支持远程模糊搜索,还需要支持多选。并且在编辑时,还能正常把已经多选好的内容回显到…

租房管理|基于SprinBoot+vue的租房管理系统(源码+数据库+文档)

租房管理目录 基于SprinBootvue的租房管理系统 一、前言 二、系统设计 三、系统功能设计 前台 后台 管理员 订单信息管理 屋主申诉管理 屋主权限 房源信息管理 订单信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…

微信小程序开发工具的使用,各个配置文件详解,小程序开发快速入门

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

wfs 文件存储系统 v1.0.5

前言:wfs 是高性能海量小文件存储系统 ,支持Linux,Windows,Macos,FreeBSD等系统, 可以高效地进行文件存储和读取。wfs 支持文件压缩归档,并提供简洁的数据读取方式和文件后台管理和 以及归档文件…

STM32学习和实践笔记(14):按键控制实验

消除抖动有软件和硬件两种方法 软件方法就是在首次检测到低电平时加延时,通常延时5-10ms,让抖动先过去,然后再来检测是否仍为低电平,如果仍然是,说明确实按下。 硬件方法就是加RC滤波电路,硬件方法会增加…

SystemUI GlobalActions plugin解析

com.android.systemui.action.PLUGIN_GLOBAL_ACTIONS 系统的默认实现为GlobalActionsImpl: 是谁发送了showShutdownUi指令? GlobalActionsImpl 是通过inject的方式创建的 GlobalActionsComponent是一个system UI services,配置在config.xml中&#xff…

架构师系列-Nginx、OpenResty(一)- 基本使用配置

Nginx 模块 高度模块化的设计是 Nginx 的架构基础,Nginx 服务器被分解为多个模块,每个模块就是一个功能模块,只负责自身的功能,模块之间严格遵循“高内聚,低耦合”的原则。 核心模块 核心模块是 Nginx 服务器正常运行…

vue2项目升级到vue3经历分享

依据vue官方文档,vue2在2023年12月31日终止维护。因此决定将原来的岁月云记账升级到vue3,预计工作量有点大,于是想着把过程记录下来。 原系统使用的技术栈 "dependencies": {"axios": "^0.21.1","babel-…

博士困境::博士毕业出路何在

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!—…

Windows 搭建自己的大模型-通义千问

1、安装 pytorch https://pytorch.org/get-started/locally/ 点击进入官网,如图选择自己的环境得到pip安装依赖的命令: pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu 2、拉取代码并安…

欢乐钓鱼大师一键钓鱼,解放双手!

《钓鱼欢乐大师》是一款让玩家体验钓鱼乐趣的游戏,在游戏中,玩家可以通过技巧和策略钓到各种各样的鱼。为了提高钓鱼效率,让玩家更快地钓到大鱼,下面将介绍如何利用脚本来优化游戏体验。 第一步:准备工作 创建云机&…

开源贡献代码之​探索一下Cython

探索一下Cython 本篇文章将会围绕最近给Apache提的一个feature为背景,展开讲讲Cython遇到的问题,以及尝试自己从0写一个库出来,代码也已经放星球了,感兴趣的同学可以去下载学习。 0.背景 最近在给apache arrow提的一个feature因为…

在win下,python如何调用.so库

#撰写c代码 #通过gcc命令编译成.so库 gcc -shared -o ./lib/pointlib.so point.c #python调用.so库 #运行结果

聊聊 Linux iowait

哈喽大家好,我是咸鱼。 我们在使用 top 命令来查看 Linux 系统整体 CPU 使用情况的时候,往往看的是下面这一列: %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 68.0 wa, 0.0 hi, 0.0 si, 0.0 st其中,man 手册解释 wa 表示 …

什么是大语言模型以及如何构建自己的大型语言模型?

一、关于大语言模型 LLM 对于无数的应用程序非常有用,如果我们自己从头开始构建一个,那我们可以了解底层的ML技术,并可以根据特定需求定制LLM,但是对资源的需求巨大。大型语言模型是一种 ML 模型,可以执行各种自然语言…

C语言 三目运算符

C语言 逻辑分支语句中 还有一种 三目运算符 我们编写代码如下 #include <stdio.h>int main() {const char* a 1 1 ? "表达式1" : "表达式2";printf("%s", a);return 0; }这里 我们根据逻辑 先定义一个a 然后 它的值 等于一个 三目运算…

CSS动画(css、js动画库:各种动画效果)

第一种方法&#xff1a;文字从上到下显示动画&#xff1b; <div class"text-container"><div class"text">文字从上到下显示</div></div><style scoped> /*确保 keyframes 规则在引用它的任何选择器之前定义&#xff0c;以避…

Centos之yum安装好玩的命令

1.会动的小火车 我在root下使用的 yum install sl.x86_64sl2.figlet yum install figlet.x86_64figlet 55553.cowsay会说话 yum install cowsay

MySQL无法打开情况下读取frm文件的表结构

一、背景&#xff1a; 开发人员通过MySQL客户端工具&#xff0c;可以访问MySQL5.7.6&#xff0c;可以访问具体的DB&#xff0c;可以查看小写表的数据&#xff0c;但是无法查看大写表的数据&#xff0c;报错信息为“table does not exist”。 二、检查与分析&#xff1a; ssh登录…