一、前言

最近笔者需要频繁更新和发布文档,因此有了寻找一个在线markdown文档平台的想法。我最终在作业部落,gitbook,codimd之中选择了codimd,并且将其部署到了自己的服务器以便提高访问速度,因此写下这篇博客记录自己部署和使用的心得,供大家参考借鉴。

二、codimd是什么?

2.1 源于hackmd的超好用markdown编辑器

hackmd是一款著名的在线协作markdown编辑器产品

CodiMD是HackMD的免费开源版本

2.2 codimd的作用

  • 在线编辑markdown文档
  • 在线发布markdown文档
  • 和别人在线协作编辑markdown文档

你可以使用官方提供的codimd服务

三、安装和使用

3.1 安装前需要知道的

  • 安装之后你可以使用的功能和官方是一样的
  • 安装的好处是,codimd官方的服务器在美国,在国内访问速度慢,部署到自己的服务器可以提高访问速度,也便于自己掌控数据库
  • 目前codimd是开放系统,所有人都可以注册和使用你服务器上的codimd服务

3.2 安装步骤

笔者是参考官方文档进行安装的

总共需要以下步骤:

  • 在MySQL建立codimd使用的数据库
  • 安装git
  • 安装docker
  • 安装docker-compose
  • 安装codimd

3.2.1 创建数据库

笔者使用宝塔面板,因此直接如图添加一个数据库

请注意允许所有ip访问该数据库,因为docker容器访问不属于本地ip访问,可以看详细解释

3.2.2 安装git

笔者直接使用yum进行安装,执行以下指令即可

yum install git

3.2.3 安装docker

同样使用yum进行安装,执行以下指令即可

yum install docker

3.2.4 安装docker compose

yum install docker-compose

3.2.5 安装codimd

version: "3"
services:
codimd:
image: nabo.codimd.dev/hackmdio/hackmd:2.0.1
environment:
- CMD_DB_URL=postgres://codimd:change_password@database/codimd
- CMD_USECDN=false
ports:
- "3000:3000"
volumes:
- upload-data:/home/hackmd/app/public/uploads
restart: always
volumes:
upload-data: {}

你需要执行以下步骤完成codimd的安装:

  • 在一个目录下创建 docker-compose.yml,向其中粘贴以上内容

  • 修改其中的配置信息

  • 在该目录下执行docker-compose up -d即可完成安装

配置信息说明:

postgres://codimd:change_password@database/codimd

这一行中各个参数的含义分别是:

 数据库连接协议://用户名:密码@数据库主机:数据库端口/数据库名

我使用的是MySQL,数据库名和用户名都是codimd,因此改成:

mysql://codimd:密码@172.18.0.1:3306/codimd

这里我的MySQL是在docker的宿主机本地安装的,但是主机ip没有写localhost,因为localhost在docker容器里面会解释成容器本身的ip,这样就连不上安装在宿主机的MySQL,所以我使用:

ip addr show docker0

查看了宿主机的ip为172.18.0.1,然后使用宿主机ip代替localhost,就达到容器内部访问外部的MySQL数据库的目的,可以看其他解决方案和详细解释

3.2.6 检查是否安装成功

安装完成后可以使用docker ps命令查看codimd是否已经运行

查看运行日志:执行以下命令

docker logs -f -t --tail 行数 容器名

通过上面的docker ps命令中看到容器名为codimd_codimd_1

所以我执行

docker logs -f -t --tail 10  codimd_codimd_1

看到

HTTP Server listening at 0.0.0.0:3000

这样的日志就表示安装成功了

3.2.7 放行端口

codimd默认是运行在3000端口的,因此需要防火墙放行

  • 防火墙放行3000端口

  • 阿里云安全组规则放行3000端口

你可以使用端口扫描工具确认端口已经正确放行

3.2.8 测试使用

访问你的服务器主机ip的3000端口,即可看到codimd的主页

3.3 开始写作

有了codimd之后你就可以在线编辑你的markdown文档了,还可以邀请别人一起编辑

四、总结

笔者在整个codimd的安装过程还是比较顺利,使用docker-compose安装十分便捷,主要遇到的问题是第一次安装之后查看日志发现访问不了数据库,后来查了资料才知道docker容器内访问localhost会被解释成docker容器本身的ip而不是常规的127.0.0.1,而且,使用docker容器访问数据库,也不属于本地服务器访问数据库。安装完成之后使用起来还是比较方便的,编辑器的页面比较美观,终于可以摆脱离线编辑文档还要写各种版本号更新记录的日子了。

五、参考资料

使用docker安装codimd,搭建你自己的在线协作markdown编辑器的更多相关文章

  1. Centos7使用Docker安装Gogs搭建git服务器

    gihub地址:https://github.com/gogs/gogs gogs官网:https://gogs.io/ gihub官方docker安装gogs方法:https://github.co ...

  2. Docker 安装 Redis, 搭建 Redis 环境

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 资深架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  3. APPIUM安装与搭建Q&A

    APPIUM安装与搭建Q&A Q1:在线安装TESTNG插件时,出现安装失败,提示:Cannot complete the install because one or more requir ...

  4. Centos7安装Docker 基于Dockerfile 搭建httpd运行环境

    Centos7安装Docker 基于Dockerfile 搭建httpd运行环境 docker docker搭建 docker build 本文档完成目标内容如下 使用Docker搭建http服务器一 ...

  5. docker安装+测试环境的搭建---

    漏洞演练环境docker地址:http://vulhub.org/#/environments/ 环境:kali-linux-2017.2-amd64.iso 一.docker安装 1.先更新一波源: ...

  6. Docker02 基本命令、开发环境搭建、docker安装nginx、Dockerfile、路径挂载

    1 基本命令 1.1 docker相关 centos6.5 安装docker环境 >sudo yum install -y http://mirrors.yun-idc.com/epel/6/i ...

  7. 使用YApi搭建API接口管理工具(docker安装)

    使用YApi搭建API接口管理工具(docker安装) 工具描述 YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布 ...

  8. docker安装部署、fastDFS文件服务器搭建与springboot项目接口

    一.docker安装部署 1.更新yum包:sudo yum update 2.安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动 ...

  9. Mac 下 docker安装

    http://www.th7.cn/system/mac/201405/56653.shtml Mac 下 docker安装 以及 处理错误Cannot connect to the Docker d ...

随机推荐

  1. 从上帝视角看Java如何运行

    JVM内存结构 可以看出JVM从宏观上可以分为 ‘内部’  及 ‘外部’  两个部分(便于记忆理解): ‘内部’包含:线程共享(公有)数据区 和 线程隔离(私有)数据区 ‘外部’包含:类加载子系统.垃 ...

  2. iOS开发 - 循环滚动的ScrollView

    源码在这里,请多多指教. 由于开发需要,要用到循环自动滚动的scrollView,借鉴了前人的思路,重新设计了一个AutoSlideScrollView.先自吹自擂一翻吧: 借鉴UITableView ...

  3. AbstractQueuedSynchronizer概述

    AbstractQueuedSynchronizer 是一个用于在竞争资源(如多线程)时使用的同步器,它内部使用了一个int类型的字段status表示需要同步的资源状态, 并基于一个先进先出(FIFO ...

  4. Spring Web Flow 笔记

    在Spring 中配置 Web Flow <?xml version="1.0" encoding="UTF-8"?> <beans xmln ...

  5. Linux基础篇,磁盘及文件使用管理

    在windows系统下,我们可以使用图形化界面很明了的看出当前硬盘使用量与某个文件的占用空间大小和文件数量.但是在linux系统中,我们应该如何得到这些信息呢? 当然是功能强大的df与du了. 一.d ...

  6. PHP获取当天、本周、本月、本季度、本年度时间

    function get_date($date, $t = 'd', $n = 0) { if ($t == 'd') { $firstday = date('Y-m-d 00:00:00', str ...

  7. 算法:模拟退火(基于c++程序)

    一 什么是模拟退火算法? 所谓退火,其实是金属冶炼的一个名词.比如加工一把刀,我们通常是把材料加工到很高的一个温度,加以锤炼.之后慢慢的将温度降下来,如果我们降温的控制比较好的话,那么金属里面的原子就 ...

  8. 数据结构和算法(Golang实现)(21)排序算法-插入排序

    插入排序 插入排序,一般我们指的是简单插入排序,也可以叫直接插入排序.就是说,每次把一个数插到已经排好序的数列里面形成新的排好序的数列,以此反复. 插入排序属于插入类排序算法. 除了我以外,有些人打扑 ...

  9. AJ学IOS(41)UI之核心动画 两行代码搞定3D转场

    AJ分享,必须精品 效果: 代码: 其实代码很少,苹果都给封装好了 // 1.创建核心动画 CATransition *ca = [CATransition animation]; // 1.1动画过 ...

  10. 造轮子:实现一个简易的 Spring IoC 容器

    作者:DeppWang.原文地址 我通过实现一个简易的 Spring IoC 容器,算是入门了 Spring 框架.本文是对实现过程的一个总结提炼,需要配合源码阅读,源码地址. 结合本文和源码,你应该 ...