内容提要
最近将项目从 Cloudflare 迁移到 VPS,研究了 Docker 镜像的最小化打包方案。通过使用 Alpine Linux 镜像和内联 node_modules,成功将镜像大小从 1.06GB 降低到 135MB,构建时间缩短至 24.9秒。
关键要点
-
将项目从 Cloudflare 迁移到 VPS,通过 Docker 运行。
-
最初的 Docker 镜像大小为 1.06GB,经过优化后缩小至 135MB。
-
使用 Alpine Linux 镜像和内联 node_modules 作为主要优化方案。
-
第一版方案通过多层构建将镜像大小缩小到 306MB,但需要明确指定生产依赖。
-
第二版方案将 node_modules 内联进 JavaScript 文件,最终只复制 JavaScript 文件到运行环境。
-
构建时间从 113.8秒缩短至 24.9秒。
延伸解读
Docker 镜像优化的重要性
在现代应用开发中,Docker 镜像的大小直接影响到部署速度和资源消耗。通过优化镜像,可以显著提高构建效率,降低存储和带宽成本。本文展示的优化方案将镜像大小从 1.06GB 降低到 135MB,体现了这一点。
内联 node_modules 的优势
将 node_modules 内联进 JavaScript 文件的做法,不仅减少了镜像体积,还简化了运行环境的依赖管理。这种方法适用于支持 SSR 的框架,如 Vite,能够有效提升构建速度和运行效率。
多层构建的局限性
虽然多层构建可以在一定程度上优化镜像,但它要求开发者明确指定生产依赖,增加了出错的风险。如果遗漏了某些依赖,可能导致运行时错误。因此,在选择构建方案时需谨慎考虑。
延伸问答
如何将 Docker 镜像的大小从 1.06GB 降低到 135MB?
通过使用 Alpine Linux 镜像和内联 node_modules,成功将镜像大小降低到 135MB。
Vite SSR 项目在 Docker 中的构建时间缩短了多少?
构建时间从 113.8秒缩短至 24.9秒。
第一版 Docker 镜像优化方案的缺点是什么?
第一版方案需要明确指定生产依赖,否则运行时会报错。
第二版 Docker 镜像优化方案是如何实现的?
第二版方案将 node_modules 内联进 JavaScript 文件,只复制最终的 dist 产物。
在 Docker 中使用 Vite SSR 的主要优势是什么?
主要优势是可以通过内联 node_modules 来显著减少镜像大小。
迁移项目到 VPS 的原因是什么?
迁移是为了将项目从 Cloudflare 转移到自己的 VPS 进行 Docker 运行。