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服务器中,剥离一些资源,进一步缩小体积。
小编的分享就到这里了,希望上面的介绍有帮到你。
>>>>>>点击进入云计算专题
上一篇:对KVM虚拟化的总结(下)
下一篇:云计算告诉你什么是云原生?
¥10500.00
¥199.00
¥199.00
¥199.00