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

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

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

内容提要

最近准备将部署在Cloudfalre、Vercel和Netlify上的项目迁移到自己的VPS上通过Docker运行。研究了一下Node.js项目Docker镜像最小化打包方案,将镜像大小从1.06GB缩小到了135MB。主要思路是使用Alpine Linux镜像、多层构建和将node_modules内联进JavaScript文件。这样可以减小镜像大小并提高构建速度。

🎯

关键要点

  • 准备将部署在Cloudflare、Vercel和Netlify上的项目迁移到自己的VPS上通过Docker运行。

  • 研究Node.js项目Docker镜像最小化打包方案,将镜像大小从1.06GB缩小到135MB。

  • 使用Alpine Linux镜像、多层构建和将node_modules内联进JavaScript文件来减小镜像大小并提高构建速度。

  • 第0版使用node:lts-alpine基础镜像,打包体积为1.06GB。

  • 第1版通过多层构建方案将镜像大小缩小到306MB,但需要明确指定生产依赖。

  • 第2版将node_modules内联进JavaScript文件,最终镜像大小缩小到135MB。

  • 最终对比显示,体积从1.06GB降低到135MB,构建时间从113.8秒降低到24.9秒。

  • 示例项目是开源的,可以在GitHub查看。

延伸问答

如何将Node.js项目的Docker镜像大小从1.06GB缩小到135MB?

通过使用Alpine Linux镜像、多层构建和将node_modules内联进JavaScript文件,可以将镜像大小缩小到135MB。

使用Alpine Linux镜像有什么好处?

使用Alpine Linux镜像可以显著减小Docker镜像的体积,提高构建速度。

多层构建方案的缺点是什么?

多层构建方案需要明确指定生产依赖,如果未指定,运行时可能会报错。

最终的Docker镜像构建时间减少了多少?

最终的Docker镜像构建时间从113.8秒减少到24.9秒。

如何将node_modules内联进JavaScript文件?

可以在Vite的配置中设置ssr.noExternal为true,以实现将node_modules内联进JavaScript文件。

示例项目在哪里可以找到?

示例项目是开源的,可以在GitHub上查看。

➡️

继续阅读