如果 2019 年技术圈有十大流行词,容器化肯定占有一席之地,随着 Docker 的风靡,前端领域应用到 Docker 的场景也越来越多,本文主要来讲述下开源的分布式图数据库 Nebula Graph 是如何将 Do…

如果 2019 年技术圈有十大流行词,容器化肯定占有一席之地,随着 Docker 的风靡,前端领域应用到 Docker 的场景也越来越多,本文主要来讲述下开源的分布式图数据库 Nebula Graph 是如何将 Docker 应用到可视化界面中,并将 1.3G 的 Docker 镜像优化到 0.3G 的实践经验。
一、前端Docker镜像体积优化
1.1 为什么要用 Docker
对于前端日常开发而言,有时也会用到 Docker,结合到 Nebula Graph Studio (分布式图数据库 Nebula Graph 的图形界面工具)使用 Docker 主要基于以下考虑:
统一运行环境:我们的工具背后有好几个服务组合在一起,诸如不同技术栈的现有服务,纯前端的静态资源。
用户使用成本低:目前云服务还在开发中,想让用户对服务组合无感,能直接在本地一键启动应用并使用。
1.2 Docker 镜像的构建
既然要使用 Docker 来承载我们的应用,就得将项目进行镜像构建。与所有 build 镜像类似,需要配置一份命名为Dockerfile 的文件,文件是一些步骤的描述,简单来说就是把项目复制到镜像里,并设置好启动方式:
1 | # 选择基础镜像 |
复制当前项目内容至镜像中
进行相应的构建
….
进行第二步骤构建
1 | FROM node:10-alpine |
复制第一步构建镜像的产物内容至当前镜像,只用到了一层镜像层从而节约了之前构建步骤的镜像层数
1 | COPY --from=builder . /nebula-Web-console |
##### .dockerignore
##### 操作合并
基于上述提到在 Dockerfile 构建镜像的过程做,每一个操作都会在前一步镜像基础上增加一“层”,可以利用 `&` 来合并多个操作,减少层数,比如:
# 以下两个操作分别代表两层
`改为:```bash
# 使用 & 后变了为一层
RUN npm install && npm run build
由此我们减少了层数的增加,即减少了镜像的体积。同时,在构建镜像的过程中,我们也可以通过在达到相同目的的前提下,尽量减少不必要的操作来减少“层数”的添加。
前端常规性体积优化
压缩丑化代码,移除源码 此操作可以放在构建步骤阶段,这样会进一步缩小镜像的文件体积。
node_modules 只下载生产环境需要的代码 此操作可以放在部署阶段,只下载生产环境所需要的第方依赖代码: npm install --production 。
公共资源放在CDN 如果镜像被期待运行在联网环境,可以考虑将一些体积相比较大的公共文件(图片、第三方库等)放在CDN服务 器上,将部分资源剥离出去,也会进一步缩小体积。
…
1.4 小结
本文标题: 前端Docker镜像体积优化
发布时间: 2021年12月22日 00:00
最后更新: 2025年12月30日 08:54
原始链接: https://haoxiang.eu.org/72fa7121/
版权声明: 本文著作权归作者所有,均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!

