解決node 程序退出時(shí)候沒有注銷Eureka 的問題
現(xiàn)象:
升級(jí)服務(wù)或者縮容服務(wù)的時(shí)候,容器關(guān)閉的同時(shí)未在Eureka 上注銷, 會(huì)導(dǎo)致出現(xiàn)大量錯(cuò)誤請(qǐng)求。
原因:
容器退出的時(shí)候進(jìn)程號(hào)為 1 的進(jìn)程會(huì)收到 stop 的信號(hào),從而程序自己可以實(shí)現(xiàn)優(yōu)雅的退出,完成一系列收尾工作,在這里優(yōu)雅的退出包含了從Eureka 中注銷掉當(dāng)前實(shí)例。
如果用Dockerfile 里面 寫的是 CMD [“npm”, "start"] 則node 進(jìn)程無法接受到這個(gè)信號(hào)
解決辦法:
改為 CMD [“node”, "app.js"]
或者
參考 即刻技術(shù)團(tuán)隊(duì) - 實(shí)現(xiàn)真正優(yōu)雅的容器應(yīng)用