【Docker项目实战】使用Docker部署轻量级LetsMarkdown文本编辑器

【Docker项目实战】使用Docker部署轻量级Markdown文本编辑器

  • 一、LetsMarkdown介绍
    • 1.1 LetsMarkdown简介
    • 1.2 主要特点
  • 二、本次实践介绍
    • 2.1 本地环境规划
    • 2.2 本次实践介绍
  • 三、本地环境检查
    • 3.1 检查Docker服务状态
    • 3.2 检查Docker版本
    • 3.3检查docker compose 版本
  • 四、拉取容器镜像
  • 五、部署LetsMarkdown应用
    • 5.1 编辑docker-compose.yaml文件
    • 5.2 创建LetsMarkdown容器
    • 5.3 查看容器状态
    • 5.4 关闭防火墙
  • 六、访问项目
    • 6.1 访问初始页
    • 6.2 编辑文章
    • 6.3 分享链接
  • 七、总结

一、LetsMarkdown介绍

1.1 LetsMarkdown简介

  • LetsMarkdown.com—— 快速、简约的 Web 编辑器:

LetsMarkdown 是一款专注于提供高效、简约的Markdown编辑体验的Web编辑器。它支持实时协作编辑和预览,让Markdown编辑变得更加协作化和易于访问。

1.2 主要特点

  1. 实时协作

    • 实现多人在线编辑Markdown文档,促进团队成员之间的即时沟通与协作。
  2. 类似 VSCode 的编辑体验

    • 支持命令面板,提供语法高亮、自动完成等功能,并允许用户自定义编辑器主题。
  3. 无需登录的极简设置

    • 用户无需登录即可使用,避免了恶意跟踪器和隐私侵犯,保障用户隐私安全。
  4. 高效的技术架构

    • 采用Rust语言和WebAssembly技术构建后端,确保编辑器的高性能和快速响应。
  5. 暗黑模式

    • 提供暗黑主题选项,减少眼睛疲劳,提升在夜间或昏暗环境下的使用体验。
  6. 快捷键支持

    • 启用快捷键后,支持快速插入表情符号,增强文档的表现力和互动性。

二、本次实践介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostnameIP地址操作系统版本Docker版本
ubuntu-001192.168.3.251Ubuntu 22.04.1 LTS24.0.7

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下轻量级Markdown文本编辑器。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

root@ubuntu-001:~#  systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Active: active (running) since Sun 2024-09-15 03:21:57 UTC; 4 days ago
TriggeredBy: ● docker.socketDocs: https://docs.docker.comMain PID: 24397 (dockerd)Tasks: 45Memory: 980.4MCPU: 1min 14.697sCGroup: /system.slice/docker.service├─24397 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

3.2 检查Docker版本

检查Docker版本,当前使用Docker版本为24.0.7

root@ubuntu-001:~#  docker -v
Docker version 24.0.7, build 24.0.7-0ubuntu2~22.04.1

3.3检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

root@ubuntu-001:~# docker compose version
Docker Compose version v2.19.1

四、拉取容器镜像

拉取该项目的容器镜像:cveinnt/letsmarkdown:latest

root@ubuntu-001:~# docker pull cveinnt/letsmarkdown:latest
latest: Pulling from cveinnt/letsmarkdown
cad51567b51c: Pull complete
46bc9dfa4ed4: Pull complete
Digest: sha256:fec103899bcbfa5a5fe637013ed6e01b4958e341d720324b3186e95782a0f570
Status: Downloaded newer image for cveinnt/letsmarkdown:latest
docker.io/cveinnt/letsmarkdown:latest

五、部署LetsMarkdown应用

5.1 编辑docker-compose.yaml文件

可以使用docker-cli快速部署,也可以使用docker compose方式部署,本次实践使用docker compose方式部署。

  • docker-cli部署示例:
docker run --rm -dp 3030:3030 cveinnt/letsmarkdown

编辑docker-compose.yaml部署文件,内容如下:

vim docker-compose.yaml
version: '3.9'
services:letsmarkdown:image: cveinnt/letsmarkdownports:- '3030:3030'restart: alwayscontainer_name: markdownnote

5.2 创建LetsMarkdown容器

执行docker compose up -d命令,创建容器。注意需要保证宿主机端中的6223没有被占用,防止端口冲突。

root@ubuntu-001:/data/letsmarkdown# docker compose up -d
[+] Running 2/2✔ Network letsmarkdown_default  Created                                                                                                               0.2s✔ Container markdownnote        Started                                                                                                               0.6s

在这里插入图片描述

5.3 查看容器状态

检查LetsMarkdown容器状态,确保LetsMarkdown容器正常启动。

root@ubuntu-001:/data/letsmarkdown# docker compose ps
NAME                IMAGE                  COMMAND                  SERVICE             CREATED             STATUS              PORTS
markdownnote        cveinnt/letsmarkdown   "./letsmarkdown-serv…"   letsmarkdown        42 seconds ago      Up 40 seconds       0.0.0.0:3030->3030/tcp, :::3030->3030/tcp

5.4 关闭防火墙

在ubuntu系统下,关闭防火墙。

root@ubuntu-001:~/tower_game# ufw disable
防火墙在系统启动时自动禁用
root@ubuntu-001:~/tower_game# ufw status
状态:不活动

六、访问项目

6.1 访问初始页

访问地址:http://192.168.3.251:3030,将IP替换为自己服务器IP地址,进入进项目的初始页。如果无法访问,则检查服务器防火墙是否设置,云服务器的安全组端口是否放行等。

在这里插入图片描述

6.2 编辑文章

点击初始页的“ENTER”选项,进入文本编辑器。

在这里插入图片描述

左侧编辑文章内容,使用markdown语法,右侧可以实时预览。

在这里插入图片描述

6.3 分享链接

复制分享链接,浏览文章效果。

在这里插入图片描述

在这里插入图片描述

七、总结

LetsMarkdown 作为一款 Web 编辑器,专注于提供高效且简约的 Markdown 编辑体验。其支持的实时协作编辑功能,让多人共同创作变得高效流畅,团队成员能同时操作并即时看到更改。实时预览功能方便用户及时查看编辑效果,有助于发现错误和调整格式。界面的简约设计避免干扰,使用户专注于内容创作。而且作为 Web 编辑器易于访问,无需安装,在各种设备上凭借网络即可使用。

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

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

相关文章

Node.js自研ORM框架深度解析与实践

Node.js自研ORM框架深度解析与实践 前言 在现代Web开发中,对象关系映射(ORM)框架扮演着至关重要的角色。它们为开发者提供了一层抽象,使得数据库操作变得更加简单和直观。本文将深入解析一个基于Node.js和MySQL的自研ORM框架&…

汇总图片拖进ps中 photoshop同时打开几个文件夹

如果你有许多文件夹,你想选中一部分,然后把里面的图片全部拖进photoshop当中,但是文件夹又不能直接拖进去,那么你可以尝试使用一下这个工具,首先测试一下直接拖文件夹。选中你要处理的文件夹,直接拖进photo…

mysql 5.7 查询运行时间较长的sql

开发过程遇到sql 执行时间长,又取消不了的情况 可使用 kill query ID 杀死进程获取正在运行的sqlSELECT ID, -- 进程ID:MySQL服务器分配给每个连接的唯一标识符,用于区分不同的客户端连接USER, …

MongoDB 从入门到实践:全面掌握文档型 NoSQL 数据库核心操作

目录 一、MongoDB 基础准备 1. 官方资源获取 2. 安装步骤解析 二、MongoDB 核心指令详解 1. 数据库操作指令 2. 集合操作指令 3. 文档操作指令 查询文档 插入文档 修改文档 删除文档 三、进阶查询技巧 1. 运算符的灵活运用 比较运算符 逻辑运算符 范围与成员运算…

CVPR2025丨遥感领域,全模态与秒超高清遥感建模重大突破,性能提升创新点

关注gongzhonghao【CVPR顶会精选】刚入门遥感建模时,总好奇别人为什么总能提出新方法?慢慢摸索后才发现,创新点并不是硬憋出来的,而是要从数据特性、传感器差异、地物细节以及环境变化中发现机会。不同波段、不同分辨率、不同时相…

HTML5详篇

前端三剑客 前端三剑客是指HTML、CSS和JavaScript: HTML超文本标记语言(Hyper Text Markup Language):简单理解描述网页结构的;用于网页内容的语言。它通过使用不同的HTML标签来定义页面中的各种元素,例如标题、段落、图像、链接等【无羽毛的小鸟模型】 CSS层叠样式表(…

【Transient-Free 3DGS】delayed densification + coarse to fine增加GS的鲁棒性

25年最新连接去除场景瞬态对象工程与3DGS的pipeline,改进了spotlesssplats,已开源: [2506.02751] RobustSplat: Decoupling Densification and Dynamics for Transient-Free 3DGSAbstract page for arXiv paper 2506.02751: RobustSplat: De…

【MySQL】CRUD基础详解

CRUD基础前言:数据库的层级结构一、新增(Create)1. 单行数据 全列插入2. 单行数据的简写插入3. 指定列插入4. 多行数据插入二、查询(Retrieve)1. 全列查询2. 指定列查询3. 查询结果为表达式(1)…

互联网大厂Java求职面试实录:核心技术栈与业务场景解析

互联网大厂Java求职面试实录:核心技术栈与业务场景解析 面试场景设定 本文通过一个严肃的面试官和搞笑的水货程序员大面条之间的对话,模拟互联网大厂Java岗位的技术面试过程。面试涵盖Java SE、Spring生态、数据库、微服务、缓存、安全、消息队列、AI等多…

response对象的elapsed属性

在Python的requests库中,当我们发送一个请求后,会得到一个Response对象,这个对象有一个elapsed属性,它返回一个timedelta对象,表示从发送请求到收到响应所经过的时间。response.elapsed.total_seconds() 是 Python req…

【ansible】5.在受管主机部署文件和Jinja2模板

1.Ansible 中,如何用模块创建一个文件并设置权限644并设置SELinux类型,如何从受管主机中删除文件?使用ansible.builtin集合中的 file 模块,添加state:touch 创建文件,mode:‘0644’ 设置权限&am…

雪花算法数据库主键

雪花算法(Snowflake)作为一种分布式 ID 生成方案,在分布式系统中具有显著优势,能够解决多个关键问题。以下是它的核心好处及主要应用场景:雪花算法的核心好处全局唯一性:通过时间戳、机器 ID、数据中心 ID …

C/C++ 头文件命名约定

有的时候&#xff0c;在C的代码中&#xff0c;可以看到有如下的头文件引用的代码: #include <iostream> #include <unistd.h> #include <csignal>其中有一些是引用了.h文件&#xff0c;另外一些是引用了模块式的比如iostream和csignal&#xff0c;那么为什么…

异质结3.0时代的降本提效革命:捷造科技设备技术创新与产业拐点分析

光伏产业经历了从PERC到TOPCon和异质结&#xff08;HJT&#xff09;的技术迭代&#xff0c;而2025年将成为异质结技术规模化应用的关键转折点。捷造科技通过一系列突破性技术创新&#xff0c;将GW级异质结整线设备价格降至2亿元&#xff0c;较行业平均水平降低约40%&#xff0c…

【网络】http 协议中 Vary 标头的作用

在 HTTP 协议中&#xff0c;Vary 标头是一个关键的缓存控制机制&#xff0c;用于告知缓存服务器&#xff08;或代理&#xff09;&#xff1a;响应内容的生成依赖于请求中的哪些特定头部字段。其核心作用是确保缓存服务器能根据这些字段的差异&#xff0c;正确区分和返回不同版本…

CSS 进阶用法

一、选择器进阶复杂选择器组合详解后代选择器后代选择器使用空格分隔两个选择器&#xff0c;例如div p&#xff0c;表示选择div元素内所有的p元素。这种选择方式会匹配所有层级的后代元素&#xff0c;包括子元素、孙元素等任意深度的嵌套元素。应用示例&#xff1a;/* 选中arti…

GitHub 热榜项目 - 日榜(2025-08-23)

GitHub 热榜项目 - 日榜(2025-08-23) 生成于&#xff1a;2025-08-23 统计摘要 共发现热门项目&#xff1a;13 个 榜单类型&#xff1a;日榜 本期热点趋势总结 本期GitHub热榜呈现三大技术热点&#xff1a;1&#xff09;AI工作流构建成为风口&#xff0c;sim和airi等项目展示…

SHAP分析+KOA-RIME开普勒结合霜冰算法双重优化BP神经网络+9种映射方法+新数据预测!机器学习可解释分析!

代码主要功能 该Matlab代码实现了一个KOA-RIME开普勒结合霜冰算法双重优化的BP神经网络回归模型&#xff0c;结合特征贡献度分析&#xff08;SHAP&#xff09;和新数据预测功能。核心功能包括&#xff1a; 双重参数优化&#xff1a;先用智能算法&#xff08;以chebyshev映射改进…

【数据结构】栈和队列——栈

目录栈和队列栈栈的基本概念栈的顺序存储实现栈的定义与初始化入栈操作出栈操作读取栈顶元素判空和判满操作栈的销毁操作操作集合栈和队列 栈 栈的基本概念 栈的定义&#xff1a; 栈&#xff08;Stack&#xff09; 是一种线性表&#xff0c;它限定了数据元素的插入和删除操…

大数据管理与应用系列丛书《数据挖掘》读书笔记之集成学习(1)

文章目录前言一、集成学习是什么&#xff1f;1.基本思想2.集成学习的类型3. 集成学习的结合策略3.1 为什么结合策略是集成学习的灵魂&#xff1f;3.2 经典策略(1)**投票法&#xff08;Voting&#xff09;****(2)平均法&#xff08;Averaging&#xff09;****(3) 学习法**3.3 关…