Docker构建需要花费很长时间的nodejs应用程序

编程入门 行业动态 更新时间:2024-10-10 10:25:03

Docker构建需要花费<a href=https://www.elefans.com/category/jswz/34/1687746.html style=很长时间的nodejs应用程序"/>

Docker构建需要花费很长时间的nodejs应用程序

[使用docker build命令构建映像时,nodejs应用程序的构建时间较长。

有一个大问题需要花费几分钟

08:03:15  Step 1/11 : FROM node:14.1.0-alpine AS build
08:03:15   ---> 0854fcfc1637
08:03:15  Step 2/11 : COPY server/package*.json /nodejs/server/
08:03:15   ---> Using cache
08:03:15   ---> 4996283ff991
08:03:15  Step 3/11 : WORKDIR /nodejs/server
08:03:15   ---> Using cache
08:03:15   ---> 93e5b63fa81d
08:03:15  Step 4/11 : RUN npm ci
08:03:15   ---> Using cache
08:03:15   ---> 2c825e02ea01
08:03:15  Step 5/11 : COPY server ./
08:03:15   ---> Using cache
08:03:15   ---> 69c024cde79f
08:03:15  Step 6/11 : WORKDIR /nodejs
08:03:15   ---> Using cache
08:03:15   ---> 49d7f8bd9514
08:03:15  Step 7/11 : COPY package*.json ./
08:03:16   ---> e82bee625c3e
08:03:16  Step 8/11 : RUN npm ci
08:03:16   ---> Running in ecfd57702906
...
08:03:49  added 1483 packages in 26.419s
08:09:40  Removing intermediate container ecfd57702906
...
08:09:40   ---> 7c6b67d85b0b
08:09:40  Step 9/11 : COPY *.json ./
08:09:43   ---> 0165efd1c97d
08:09:43  Step 10/11 : COPY src ./src/
08:09:51   ---> 42e54cee6b91
08:09:51  Step 11/11 : RUN npm run build:prod
08:09:51   ---> Running in af6f9b013d27

构建Java映像时不会发生。

我的Dockerfile

FROM node:14.1.0-alpine AS build
COPY server/package*.json /nodejs/server/
WORKDIR /nodejs/server
RUN npm ci
COPY server ./

WORKDIR /nodejs
COPY package*.json ./
RUN npm ci
COPY *.json ./
COPY src ./src/
RUN npm run build:prod
...

我尝试使用buildkit,但是它具有相同的行为

08:37:20  #17 exporting to image
08:37:20  #17 exporting layers
08:50:12  #17 exporting layers 766.8s done

我也将node_modules添加到.dockerignore文件,但没有更改。

Docker版本19.03.6,内部版本369ce74a3c

可能是什么问题?

“添加的1483程序包...”和“卸下中间容器”之间发生了什么?

回答如下:

我已经找到问题的原因,并希望在遇到类似问题时与他人分享。

较长的“导出层”时间是由其中一层中的node_modules文件夹引起的。删除它可以解决问题,但这实际上是一种解决方法。

我合并了npm ci和npm run build ...步骤,并在同一步骤中删除了node_modules。

RUN npm ci && npm run build:prod && rm -rf node_modules

因此,Dockerfile的最终构建阶段如下所示:>

FROM node:14.1.0-alpine AS build
COPY server/package*.json /nodejs/server/
WORKDIR /nodejs/server
RUN npm ci
COPY server ./

WORKDIR /nodejs
COPY package*.json ./
COPY *.json ./
COPY src ./src/
RUN npm ci && npm run build:prod && rm -rf node_modules
...

正如我所说的,这只是一种解决方法,我认为根本原因是Docker在导出包含许多小文件的层(例如node_modules中的文件)时遇到了问题。

更多推荐

Docker构建需要花费很长时间的nodejs应用程序

本文发布于:2024-05-07 15:20:40,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756895.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:很长时间   应用程序   Docker   nodejs

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!