選擇一個(gè)Node的Docker鏡像看起來(lái)像是一件小事,但是鏡像的大小和潛在漏洞可能會(huì)對(duì)你的CI/CD流程和安全造成重大的影響。那我們?nèi)绾芜x擇一個(gè)最好Node.js Docker鏡像呢?
node.js極速入門課程:進(jìn)入學(xué)習(xí)
我們?cè)谑褂?code>FROM node:latest或只是FROM node
時(shí),很容易忽略他潛在的風(fēng)險(xiǎn)。如果你不知道總體的安全風(fēng)險(xiǎn)并且把他引入到了CI/CD的流程中,那無(wú)疑是加劇了這個(gè)風(fēng)險(xiǎn)?!鞠嚓P(guān)教程推薦:nodejs視頻教程、編程教學(xué)】
下面這個(gè)例子非常典型,你可以從很多教程或者博客文章中看到這個(gè)Node.js Dockerfile的配置。但是這個(gè)Dockerfile的配置存在很大的問(wèn)題,非常不推薦這樣使用:
FROM node WORKDIR /usr/src/app COPY . /usr/src/app RUN npm install CMD "npm" "start"
譯者注:如果需要跳過(guò)分析直接看結(jié)論,請(qǐng)直接滑到文末。
一個(gè)可供選擇Node.js Docker鏡像
當(dāng)你構(gòu)建一個(gè)Node.js鏡像的時(shí)候,實(shí)際上有很多選擇。其中就包括了Node.js核心團(tuán)隊(duì)維護(hù)的官方Docker鏡像,以及從特定的基礎(chǔ)鏡像中選擇的特殊Node.js鏡像版本。還可以選擇其他的,比如谷歌在distroless
項(xiàng)目上構(gòu)建的Node.js應(yīng)用程序,或者是Docker官方團(tuán)隊(duì)提供的一個(gè)名為scratch
的鏡像。
在這些Node.js的Docker鏡像中,哪一個(gè)是最適合你的呢?
讓我們一個(gè)一個(gè)的去分析,了解