使用docker安裝codimd,搭建你自己的線上協作markdown編輯器

黃鈺朝發表於2020-04-28

一、前言

最近筆者需要頻繁更新和釋出文件,因此有了尋找一個線上markdown文件平臺的想法。我最終在作業部落,gitbook,codimd之中選擇了codimd,並且將其部署到了自己的伺服器以便提高訪問速度,因此寫下這篇部落格記錄自己部署和使用的心得,供大家參考借鑑。

二、codimd是什麼?

2.1 源於hackmd的超好用markdown編輯器

hackmd是一款著名的線上協作markdown編輯器產品

CodiMD是HackMD的免費開源版本

2.2 codimd的作用

  • 線上編輯markdown文件
  • 線上釋出markdown文件
  • 和別人線上協作編輯markdown文件

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

image-20200428232732142

三、安裝和使用

3.1 安裝前需要知道的

  • 安裝之後你可以使用的功能和官方是一樣的
  • 安裝的好處是,codimd官方的伺服器在美國,在國內訪問速度慢,部署到自己的伺服器可以提高訪問速度,也便於自己掌控資料庫
  • 目前codimd是開放系統,所有人都可以註冊和使用你伺服器上的codimd服務

3.2 安裝步驟

筆者是參考官方文件進行安裝的

總共需要以下步驟:

  • 在MySQL建立codimd使用的資料庫
  • 安裝git
  • 安裝docker
  • 安裝docker-compose
  • 安裝codimd

3.2.1 建立資料庫

筆者使用寶塔皮膚,因此直接如圖新增一個資料庫

請注意允許所有ip訪問該資料庫,因為docker容器訪問不屬於本地ip訪問,可以看詳細解釋

image-20200428231026983

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的主頁

image-20200428232641617

3.3 開始寫作

有了codimd之後你就可以線上編輯你的markdown文件了,還可以邀請別人一起編輯

四、總結

筆者在整個codimd的安裝過程還是比較順利,使用docker-compose安裝十分便捷,主要遇到的問題是第一次安裝之後檢視日誌發現訪問不了資料庫,後來查了資料才知道docker容器內訪問localhost會被解釋成docker容器本身的ip而不是常規的127.0.0.1,而且,使用docker容器訪問資料庫,也不屬於本地伺服器訪問資料庫。安裝完成之後使用起來還是比較方便的,編輯器的頁面比較美觀,終於可以擺脫離線編輯文件還要寫各種版本號更新記錄的日子了。

五、參考資料

相關文章