Vite SSR 项目 Docker 镜像最小化打包方案

Vite SSR 项目 Docker 镜像最小化打包方案

💡 原文中文,约6200字,阅读约需15分钟。
📝

内容提要

最近将项目从 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 运行。

🏷️

标签

➡️

继续阅读