使用 Docker 在服务器部署 CodiMD
本教程使用阿里云服务器学生机,系统为 CentOS 7,不同系统间方式大同小异。
之前一直习惯使用 HackMD,最近在进行数学建模比赛时需要文档协同编辑,由于众所周知的原因队友无法正常使用 HackMD,故在自己的服务器上部署 CodiMD,以确保可以无障碍访问。
一、CodiMD
CodiMD 是一个开源项目,可实现 MarkDown 文档的协同编辑,功能与 HackMD 一致(这好像是废话),项目地址在 GitHub 的 hackmdio 下,部署极为简单。适合无法正常使用 HackMD 的用户将其部署到自己的国内服务器,安全稳定。
二、安装前准备
CodiMD 默认监听 3000
端口,应提前设置阿里云安全组规则放行 3000
端口;若之前未开放 MySQL 的 3306
端口,这里也需要进行开放(原因在下文会讲)。
三、Docker 安装
Docker 是一个开放源代码软件,用于开发应用、交付应用、运行应用,这里使用其运行 CodiMD。Docker容器与虚拟机类似,但原理上,容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件。
本文默认系统已经有 Git
环境。若没有,可执行 yum install git
安装。
-
安装 Docker
yum install docker
-
安装 Docker Compose
yum install docker-compose
四、安装配置 CodiMD
-
创建 MySQL 数据库
习惯了使用 MySQL ,这里也可使用其他数据库。
mysql -uroot -pbalabala#你的用户名与密码 mysql>create database codimd;
由于容器是从系统中分离出来的部分,其中运行的应用是对于系统来说位于系统外部,故直接访问
127.0.0.1
是无法访问本机的,需访问服务器的外网地址。因此,在 Docker 中运行的 CodiMD 无法直接通过127.0.0.1:3306
访问 MySQL,需要将 MySQL 设置为所有 ip 均可访问:mysql -uroot -pbalabala#你的用户名与密码 mysql>use mysql; mysql>update user set host = '%' where user ='root'; mysql>select host, user from user;#查看是否修改成功 mysql>flush privileges;#使修改生效
-
配置 CodiMD
在某目录下(自定义)执行
vim docker-compose.yml
(其实应当先创建再编辑,但 vim 会自动创建不参在的文件)编辑配置文件内容如下:version: "3" services: codimd: image: nabo.codimd.dev/hackmdio/hackmd:2.0.1 environment: - CMD_DB_URL=mysql://root:balabala@39.97.235.0:3306//codimd # CMD_DB_URL 格式为 # 数据库连接协议://用户名:密码@数据库主机:数据库端口/数据库名 # 如果同样使用 mysql,只需修改密码与服务器 ip 即可 - CMD_USECDN=false ports: - "3000:3000" volumes: - upload-data:/home/hackmd/app/public/uploads restart: always volumes: upload-data: {}
与上一步骤相同的原因,这里的 ip 必须使用外网 ip ,不能使用
127.0.0.1
。 -
安装 CodiMD
在上一步骤所在文件目录下执行如下语句即可依赖编辑好的配置文件完成
CodiMD
的安装:docker-compose up -d
五、CodiMD 使用
-
基本使用
完成以上步骤,即可访问服务器的
3000
端口来到 CodiMD 主页(如下图)。注册登录后即可进行文档档创建与协同编辑。其他协作者可以放心大胆地使用,后台密码均进行了严格加密,密码防泄漏做得很好的。
-
注意事项
CodiMD 的注册界面跟登陆界面是同一个界面,及你注册跟登录的区别仅仅是在输入邮箱、密码后点击的按钮不同而已。由于不输入邮箱、密码
Register
按钮是无法按下的,就会给人一种没法注册的错觉。(都是习惯惹的祸)感觉应当把这个注意事项放到前面一点的位置,防止大家再次踩坑,但总感觉放最后才符合文章的合理结构。