docker build这个过程慢,如何优化?

image.png
如图,docker build持续了2分钟。
这么慢并不是docker pull的原因,因为已经替换过docker镜像源了
image.png

Dockerfile:
image.png
仅构建一个nginx

请问应该怎么进行优化?

docker info内容:
image.png

docker所有镜像:
image.png

阅读 6.2k
3 个回答

可能是build时,todo-web-dev文件夹里面包含了 .node_module,然后node_module里面的文件非常多非常大。

docker进行build时,需要把工作目录下的文件都加载到构建上下文上,时间应该都是花在这里。

可以在构建的时候换一个目录,只保留必要的文件,再进行build。

Docker构建过程有时会很慢,但有几种方法可以优化它:
使用多级构建:多级构建允许您在Dockerfile中使用多个FROM语句,这可以帮助您减少最终图像大小和构建时间。
缓存Docker层:Docker缓存允许您重用以前构建的层,减少需要构建的图像层的数量,并加快构建过程
尽量减少RUN命令的数量:RUN命令越多,创建的层就越多,这会减慢构建过程。尽量减少Dockerfile中RUN命令的数量。
使用Docker构建上下文:Docker构建环境是当前目录中的一组文件,将作为构建环境发送给Docker守护进程。减小构建上下文的大小以加快构建过程。
使用Docker注册表镜像:在网络中使用Docker注册镜像可以减少从internet获取图像所需的时间,因为图像将从镜像而不是从原始注册表获取。

使用dockerignore文件:dockerignorefile允许您从构建上下文中排除文件和目录,这可以减少构建上下文的大小并加快构建过程。

通过使用这些技术,您应该能够优化Docker构建过程并使其更快。

正如该问题的采纳答案,docker build时会将工作目录下的文件加载到上下文上,再这个时候该工作目录下存在node_module等文件,这些文件随项目扩展第三方包依赖增加,体积会越来越大,导致拖慢了构建速度。
解决:

  • 构建的时候换一个目录,只保留必要的文件,再进行build;跟采纳的问题内容相同
  • 添加.dockerignore文件,忽略掉不必要的文件

由于,我需要将工作目录下打包好的dist目录,复制一份到/server/dist/,所以使用第二种解决方法较合适
image.png

推荐问题
宣传栏