🗒️将Next.js Docker镜像缩小15倍
2024-8-28
| 2024-10-24
0  |  阅读时长 0 分钟
date
Aug 28, 2024 11:42 PM
type
status
slug
summary
tags
category
updated
Oct 24, 2024 12:52 PM
icon
password

前言

Next.js除了在vercel上部署之外,更多的是部署在自己的服务器上,为此官方提供了Docker的打包运行方式。这里分享的是如何优化打包的Docker镜像大小。
 

新建默认项目

安装官方的命令建立项目。
然后在项目根目录新建Dockerfile 文件
之后运行打包命令
notion image
然后会发现近2GB的大小。
 

第一步优化 使用较小的基础版本镜像

修改node版本,使用较小的基础版本镜像
之后运行打包命令
notion image
发现少了一半的大小。
 

第二步 多阶段构建

notion image
也就每个阶段只构建需要的文件,而不是全部都包含在一起
之后运行打包命令,修改标签名
notion image
可观察到镜像少了300MB的样子。
 

第三步 Next.js输出文件配置

修改next.js.config.mjs的内容,设置output的值为standalone 。这里要注意的是官方提醒
We do not recommend using the runtimeConfig option, as this does not work with the standalone output mode. Instead, we recommend incrementally adopting the App Router. 我们不建议使用runtimeProtect选项,因为这不适用于独立输出模式。相反,我们建议逐步采用应用程序路由器。
之后运行npm run build 命令,会在.next文件夹中发现一个stanalone文件夹,里面包含了所有的文件。
修改Dockerfile文件
之后打包可得镜像
notion image
看,现在只有135.56mb内容。实际上官方给的镜像文件就是这样的,这里正好分解学习一下为什么要这么写。
 
  • NextJS
  • Docker
  • PWA技术简介盒子模型
    Loading...