构建Docker映像的最佳方法

9jyewag0  于 2023-01-29  发布在  Docker
关注(0)|答案(2)|浏览(149)

我刚刚开始学习Docker。我有一个nodeJs web应用程序,并使用2个不同的Docker文件构建了2个映像。这2个映像的大小真的不同。有人能告诉我为什么它们使用相同的alpine、node和npm版本,但大小却真的不同吗?推荐使用哪种方法来构建nodeJS应用程序映像?
创建91.92MB映像的第一个停靠文件:

FROM alpine
RUN apk add --update nodejs npm curl
COPY . /src
WORKDIR /src
RUN npm install
EXPOSE 8080
ENTRYPOINT ["node", "./app.js"]

创建259.57MB映像的第二个停靠文件:

FROM node:19-alpine3.16

RUN apk add --update npm curl

COPY . /src

WORKDIR /src

RUN npm install

CMD [ "node", "./app.js" ]
cig3rfwq

cig3rfwq1#

如果它能满足您的技术和非技术需求,那么使用预构建的node映像可能更简单、更容易更新,我一般会重新评论使用它。
node image已经包含了npm;而且,Dockerfile不使用apk来安装Node,而是从tar文件或源代码中安装它,因此apk add npm调用最终安装了您不需要的Node的整个第二个副本;这可能是两个图像大小的最大差异。

r6l8ljro

r6l8ljro2#

你开始的基础图片会极大地影响你最终的图片大小--假设你在每个基础图片上添加了相同的东西。您正在比较一个基本的alpine图像(5.5mb)到基本节点图像(174 MB)。基础alpine图像中的内容很少,而节点图像-虽然基于alpine -至少有节点,但可能也有很多额外的内容。你是否需要那些额外的东西不是我能说的。
如果你想知道到底添加了什么,你可以检查用于构建这些公共映像的Dockerfile,你也可以使用像dive这样的工具来检查本地映像层。

相关问题