嗯嗯對,用 slim 或是 alpine 確實可以省下很多空間,但同時他們也少裝了很多東西,可能會導致一些問題
slim
完整的 node image 是建立在 buildpack-deps:jessie
上,而 slim 版本是建立在 buildpack-deps:jessie-curl
上,後者比前者少裝了很多東西像是 g++
、gcc
、python
等等,這會導致 node:slim
沒辦法編譯 C++ 寫成的函式庫
舉個常見的例子像是 idle-gc,他幾乎是用 C++ 寫成的,所以 npm install
時需要編譯,不能沒有 g++
可以嘗試看看跑 docker run node:slim npm install idle-gc
會噴錯誤而 docker run node npm install idle-gc
可以順利完成安裝
alpine
alpine 的問題其實跟 slim 滿像的,他是建立在 alpine linux 上再自己安裝 node,然後也少裝了很多東西,所以也是沒辦法 idle-gc
這個函式庫
總結
其實大部分 node library 在 slim 跟 alpine 上都還是可以正常安裝、運作,但因為一個專案可能會用到很多函式庫,每個函式庫下又有各自的依賴,只要其中一個依賴沒辦法正確運作那就有可能有 bug,所以除非你很確定那深不見底的 node_modules
裡面的函式庫都能正常運作 XD,不然我還是比較推薦完整的 node image