iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
DevOps

以 Docker 為始的多種開源服務初探系列 第 24

Day 24 快速啟動個 JSON Server

前端開發者在後端 api 尚在開發階段,需要模擬 api 回傳一些種子資料時,自行架設一個開發用的 api 伺服器會是一個可行的選項。

JSON-Server Docker

網路上已有不少人們包裝好的 docker 映像檔,我是採用 clue/json-server 來執行安裝。步驟如下:

  1. 將種子資料上傳到遠端,並執行以下命令
docker run -d -p <外聯的 port>:80 -v <伺服器內存放 json 種子資料的位置>:/data/db.json clue/json-server
# 如:docker run -d -p 80:80 -v /user/andy/articles.json:/data/db.json clue/json-server
  1. 從瀏覽器端連入看看,看是否可以取得資料
    http://<IP Address>:<外聯的 port>
  2. 若你看到以下畫面,那就代表成功了

JSON-Server 簡易設定

在你同步進 docker 容器內的 *.json,其格式若是如下的話:

{
   "posts":[
      {
         "id":1,
         "body":"foo"
      },
      {
         "id":2,
         "body":"bar"
      }
   ],
   "comments":[
      {
         "id":1,
         "body":"baz",
         "postId":1
      },
      {
         "id":2,
         "body":"qux",
         "postId":2
      }
   ],
   "response":[
      {
         "id":1,
         "message":"Message1"
      },
      {
         "id":2,
         "message":"Message2"
      }
   ]
}

那所對應的 API 會有 4 隻:

  1. http://<遠端伺服器 IP 位置>:<外聯 port>/posts
  2. http://<遠端伺服器 IP 位置>:<外聯 port>/comments
  3. http://<遠端伺服器 IP 位置>:<外聯 port>/response
  4. http://<遠端伺服器 IP 位置>:<外聯 port>/db

若你需要關於 JSON Server 的細部設定,可以上其 Github Repo:JSON Server 觀看。

JSON-server 的 docker 啟動後卻立刻關閉了,該如何處理?

首要便是查找 log,看有無噴出錯誤訊息。這點通常會發生在你所傳入的 JSON 檔有格式錯誤。
docker logs <container id 或 name>
觀察一下 log 如下:

SyntaxError: Malformed JSON in file: db.json
Trailing comma in array at 13:3
  ]
  ^
    at Object.parseJSON (/usr/local/lib/node_modules/json-server/node_modules/jju/lib/parse.js:745:13)
    at parse (/usr/local/lib/node_modules/json-server/node_modules/json-parse-helpfulerror/index.js:10:13)
    at Object.fileSyncRead [as read] (/usr/local/lib/node_modules/json-server/node_modules/lowdb/lib/storages/file-sync.js:18:16)
    at LodashWrapper.db.read (/usr/local/lib/node_modules/json-server/node_modules/lowdb/lib/common.js:25:24)
    at Object.init (/usr/local/lib/node_modules/json-server/node_modules/lowdb/lib/common.js:55:13)
    at module.exports (/usr/local/lib/node_modules/json-server/node_modules/lowdb/lib/main.js:25:17)
    at module.exports (/usr/local/lib/node_modules/json-server/lib/cli/utils/load.js:36:17)
    at start (/usr/local/lib/node_modules/json-server/lib/cli/run.js:122:5)
    at module.exports (/usr/local/lib/node_modules/json-server/lib/cli/run.js:159:3)
    at module.exports (/usr/local/lib/node_modules/json-server/lib/cli/index.js:81:3)
Found db.json, trying to open

所以在撰寫完種子檔案後,別忘記貼到如JSON Formatter & Validator做檢查。

小結

運用 docker 的容器化技術,外加上前人建置好的映相檔資源,著實可以加速前端開發者的進程

Reference

  1. docker-json-server

上一篇
Day 23 Python 學習者常用的 Jupyter Notebook
下一篇
Day 25 似 Trello 的開源看板管理工具 - Wekan
系列文
以 Docker 為始的多種開源服務初探30

尚未有邦友留言

立即登入留言