使用 Node.js Express 觸發 Express 重開

前陣子聽到一個需求是有客戶希望他們的服務可以使用網頁重新開啟他們的網頁伺服器,那今天就來簡單說明怎麼做到這件事情吧!

重啟 Node.js process

使用 process.exit(1) 就可以直接把 Node.js 的 process 關閉,裡面的 1 就表示系統會收到失敗離開的系統事件,如果希望系統是收到正常離開的系統事件,可以直接使用 process.exit(0)

const express = require('express')
const app = express()
const port = 3000
const stopTime = 3 // 3s

app.listen(port, () => {
  console.log(`Express listen at http://localhost:${port}`);
})

console.log(`express will stop at ${stopTime}s`);
setTimeout(() => process.exit(1), stopTime * 1000);

使用 Docker 開啟 Node.js 服務

基本上就是簡單的 Node.js 封裝,就可以直接執行了

FROM node:12

WORKDIR /user/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["node", "index.js"]

開啟 Docker 後基本上就可以看到這隻 Node.js 每 3 秒就會重啟一次,感覺是不是很簡單呢 ~