我的 Docker 示例现已成为官方 Next.js 文档的一部分
Source: Dev.to
我一直相信开源的力量。我们每天使用的许多工具之所以存在,都是因为开发者选择将自己的工作分享给世界。能够回馈社区是我非常看重的事。
- Pull Request: https://github.com/vercel/next.js/pull/87069
- Repository: https://github.com/kristiyan-velkov
添加的内容
with-docker(现代化)
此示例已完全现代化,现已展示在 2026 年真实的 Next.js 应用应如何构建和部署。
关键改进
- 使用 App Router
- 完全使用 TypeScript 编写
- 使用 Tailwind CSS v4 进行样式化
- 多阶段 Docker 构建
- 支持 Node.js 与 Bun 运行时选项
- 带有 profiles 的 Docker Compose
- BuildKit 缓存挂载
- 生产级文档
- 通过非 root 用户进行安全加固
- 明确说明 Node.js 镜像的选择(Slim vs Alpine)
它取代并合并了旧的 with-docker-standalone-output 示例,成为参考架构而非最小化演示。
文档: https://nextjs.org/docs/app/getting-started/deploying
with-docker-export-output(新)
此示例演示了使用 output: "export" 生成完整静态站点的另一种部署策略。
生产就绪的服务选项
-
选项 A – Nginx(生产级)
- 使用
nginxinc/nginx-unprivileged - 优化的
nginx.conf - Gzip 压缩
- 正确的缓存头
- 注重安全的配置
- 使用
-
选项 B – 使用
servenpm 包的 Node.js 服务- 更简洁的设置
- 基于 Node 的服务
- 适合轻量级部署
共通特性
- 多阶段构建
- BuildKit 缓存挂载
- Docker Compose profiles
- 详细文档解释权衡
文档: https://nextjs.org/docs/app/getting-started/deploying
将这些 Docker 示例贡献到官方的 Next.js 仓库,是社区的一个重要里程碑。