下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

对前端Docker镜像体积进行优化

作者:匿名     来源: 互联网点击数:746发布时间: 2021-10-17 23:03:55

标签: DockerDocker镜像体积优化

  Docker是一个开源的应用容器引擎,它允许开发者打包他们的应用程序,并将其包装在可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。接下来,小编就来讲讲前端Docker镜像体积优化。

  建立Docker镜像

  由于使用Docker来承载我们的应用程序,所以我们必须建立项目镜像。与所有build镜像相似,需要配置一个文件来命名dockerfile。该文件描述了一些步骤。简而言之,将项目复制到镜像中,并设置启动:  

 

  优化Docker镜像体积

  如果Docker镜像是根据上述配置文件构建的,以我们的项目为例,它将生成一个大约1.3GB的镜像,这看起来有点可怕,因为即使在网络速度快的用户计算机上下载镜像也需要很长时间,这是不可接受的。

  通过对相应数据的调查,了解到Docker镜像体积可以从以下几个方面进行优化:

  ·选取基本镜像源

  所谓基本镜像源,是我们在构建步骤时选择的基本环境(如上述node:10)。当我们在Dockerhub上查看关于Node.js的基础环境镜像时,我们会发现有很多版本。虽然都是与Node.js相关的基础镜像,但是不同的版本除了Node.js版本不同,内部集成环境也不同。

  按照项目的实际需要,当我把基本镜像改成alpine版本时,我又重新建立了它们。这时镜像体积大幅减小,从1.3GB降至500+MB,体积优化效果明显。因此,当你发现自己建造的镜像体积太大时,可以考虑从更换基本镜像源开始,看是否使用过于臃肿的镜像源。

  ·建立Multi-stage镜像

  我们所说的multi-stage,是Docker在构建镜像时采用的策略,详细点击链接提供的信息。

  ·建立Docker规则

  总而言之,使用Docker构建所提供的规则:Dockerfile的操作可以增加所谓的镜像层,每个层都可以增加镜像的体积。采用多步策略,每一步包含一系列具有相同意义的操作(如构建、部署),通过引用产品镜像来减少最终构建镜像所需的层数。具体操作如下:  

 

  .dockerignore

  类似于我们熟悉的。gitignore是指当我们复制COPY或ADD文件时,忽略不必要的文件(如文件文件、git文件、node_modules和一些不必要的文件等。),从而减少图像体积。

  ·合并操作

  基于以上在Dockerfile中构建镜像的过程,每个操作都会在前一个镜像的基础上增加一层,并且可以使用&合并多个操作来减少层数,例如:

  

 

  因此,我们减少了层数的增加,也就是镜像的体积。同时,在制作镜像的过程中,在达到相同目的的基础上,可以尽量减少不必要的操作,减少层数的增加。

  优化前端常规体积

  ·缩小丑化代码,删除源代码。此操作可放置在构建阶段,从而进一步小镜像的文件体积。

  ·node_modules只下载生产环境所需的代码。此操作可放置在部署阶段,仅下载生产环境所需的第三方代码:npminstall-production。

  ·如果公共资源放在CDN中,如果镜像预计会在网络环境中运行,可以考虑将一些相对较大的公共文件(图片、第三方库等。)放在CDN服务器中,剥离一些资源,进一步缩小体积。

  小编的分享就到这里了,希望上面的介绍有帮到你。

    >>>>>>点击进入计算专题

赞(12)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程