[英]Best way to build a Docker image
我剛剛開始學習 Docker。我有一個 nodeJs web 應用程序,並使用 2 個不同的 Dockerfile 構建了 2 個圖像。2 個圖像的大小確實不同。 有人能告訴我為什么即使它們使用相同的 alpine、node 和 npm 版本,它們的大小確實不同,構建 nodeJS 應用程序映像的推薦方法是哪一種?
第一個 Dockerfile 創建了一個 91.92MB 的圖像:
FROM alpine
RUN apk add --update nodejs npm curl
COPY . /src
WORKDIR /src
RUN npm install
EXPOSE 8080
ENTRYPOINT ["node", "./app.js"]
第二個 Dockerfile 創建了一個 259.57MB 的圖像:
FROM node:19-alpine3.16
RUN apk add --update npm curl
COPY . /src
WORKDIR /src
RUN npm install
CMD [ "node", "./app.js" ]
您開始使用的基本圖像會極大地影響您的最終圖像大小 - 假設您向每個基本圖像添加相同的東西。 在您的例子中,您正在比較基本的高山圖像(5.5mb)和基本節點圖像(174mb)。 基本的 alpine 圖像中只有很少的東西,而節點圖像——雖然基於 alpine——至少有節點,但可能還有很多額外的東西。 你是否需要額外的東西不是我說的。
如果您希望准確查看添加的內容,可以檢查用於構建任何這些公共映像的Dockerfile 。 您還可以使用dive等工具來檢查本地圖像層。
如果它滿足您的技術和非技術需求,使用預構建的node
圖像可能更簡單,更容易更新,我通常會推薦使用它。
node
圖像已經包含npm
; 您不必apk add
它。 此外, Dockerfile
不使用apk
安裝 Node,而是從 tar 文件或源代碼安裝它。 所以apk add npm
調用最終會安裝你不需要的 Node 的第二個完整副本; 這可能是兩個圖像尺寸的最大差異。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.