从本地到生产:使用 Docker 部署 Nuxt

Dockerfile

我们的 Dockerfile 使用多阶段构建过程来创建优化的镜像。

提醒
  • 使用 alpine 可以使用最小镜像,可以大幅减少构建后镜像的大小
  • corepack enable 跨环境一致的管理 pnpm 版本
  • 多阶段构建可以把最终镜像减少 90%
  • --from=build 确保依赖版本完全匹配
  • 仅复制 .output 目录可以防止源代码包含在镜像中

Docker compose 配置

提醒
  • restart:始终确保应用在崩溃后重启
  • healthcheck:这项配置会验证程序是否真正运行
  • resources:防止容器内存泄露
  • ports:端口映射允许外部直接访问

健康检查可确保您的应用程序正确响应。如果要添加自定义运行状况端点,请在 Nuxt 应用程序中创建 API 路由:

server/api/health-check.tsts
export default defineEventHandler(() => {
    return "It's working now!!"
})

使用 GitHub Actions 自动构建

这个 GitHub Action 会在创建标签或者手动出发时构建和推送镜像

这段代码来自 From Local to Production: Deploy the Latest Nuxt Stack with Docker

特性说明

  • 在 git tag (v1.0.0|v1.2.0|v2.0.0)上触发
  • 支持带有自定义版本标签的手动触发器
  • 使用 GitHub 的缓存来加速构建
  • 自动使用版本和最新标签来标记镜像
  • 使用代码仓库的名称作为镜像名称

如果需要使用此设置:

  1. 在 GitHub 仓库中发布带有版本标签的新版本或者推送新标签
  2. 从 GitHub 的操作选项卡中手动出发工作流程

正确使用原则

  • 在生产中之后总使用特定的版本标签
  • 设置健康检查的监控
  • 配置正确的日志记录
  • 使用环境变量进行配置
  • 设置 SSL/TLS

使用 zod 对.env 文件约束

翻译:在 Vue 中构建递归组件

评论区

评论加载中...