(1292) Next.js 全栈开发实战课:每日一签网站——Zeabur 通过 Docker 部署 Strapi + TiDB - YouTube
https://www.youtube.com/watch?v=hY-vsM3td6M视频内容总结:Next.js 全栈开发实战课 - 第二段
1. 开场与课程回顾
- 主题:继续录制 Next.js 全栈开发实战课程的第二课。
- 回顾:
- 上节课介绍了“每日一签”网站(功能、来源、技术栈)。
- 讲解了 Mono Repo 概念,所有项目代码放在同一仓库(qian-example)。
- 目标:本次课程完成 Strapi 的本地搭建与 Zeabur 上的 Docker 部署。
2. Strapi 项目创建
- 初始化 Strapi:
- 在 Mono Repo 的 packages/cms 目录下运行 pnpx create-strapi-app cms。
- 跳过 Strapi Cloud 登录(自建服务)。
- 不使用默认 SQLite,选择 MySQL(后续连接 TiDB)。
- TiDB Cloud 配置:
- 介绍 TiDB:
- 国内数据库服务,底层是 KV 键值数据库,上层提供 MySQL 接口。
- 优点:自动分库分表、扩容方便,适合大数据量。
- TiDB Cloud:免费提供 5 个集群,每集群 5GB 存储,每月 5M IU(计费单位),支持自动备份。
- 创建数据库:
- 新建 Serverless 集群(qian-DB),选东京节点,免费计划。
- 获取连接信息:Host、Port (4000)、Username、Password(生成后需保存)、SSL。
- Strapi 配置:
- 输入 TiDB 的 MySQL 连接信息,完成 Strapi 项目初始化。
- 使用 TypeScript 和 pnpm,依赖安装完成。
3. 本地运行 Strapi
- 启动:在 packages/cms 下运行 pnpm run develop,启动 Strapi 开发模式。
- 功能介绍:
- Strapi 是低代码 CMS 和 API 构建工具,适合快速创建 API。
- 内置用户体系,支持多人协作,优于传统 CMS(如 WordPress、Ghost)。
- 可自定义字段,适合非典型内容需求。
- 首次登录:
- 打开浏览器(默认 1337 端口),输入用户名(Meathill Zhai)、邮箱和密码。
- 设置中文为默认语言。
4. 创建“每日一签”内容类型
- Content-Type Builder:
- 创建内容类型“每日一签”(qian,复数 qians)。
- 字段:
- title(短文本,必填,非唯一)。
- content(富文本,必填)。
- date(日期,必填,唯一)。
- thumbnail(单张图片,必填)。
- 保存后需重启 Strapi。
- 文件生成:
- 在 src/api/qian 下生成 schema、controller 等文件。
- 支持二次开发(如添加 hooks、权限校验)。
- 类型文件(types/generated)可供其他项目引用。
5. Docker 部署 Strapi 到 Zeabur
- 为何用 Docker:
- Strapi 涉及数据库、缓存和复杂 API,无法直接用 Serverless。
- Docker 打包运行环境(Node.js、系统软件等),便于跨服务器部署。
- 编写 Dockerfile:
- 基础镜像:node:20-alpine(轻量 Linux + Node.js)。
- 步骤:
- 更新系统,安装工具(pnpm、node-gyp)。
- 设置生产环境(NODE_ENV=production)。
- 复制 package.json,安装依赖。
- 复制项目文件,运行 npm run start(非 develop)。
- .dockerignore:排除临时文件(node_modules、.git、build 等)。
- 部署到 Zeabur:
- Zeabur 介绍:
- 国人开发的托管平台,支持 Serverless 和 Docker。
- Serverless 免费额度高(如 Next.js 部署)。
- Docker 需 Developer 套餐(5 美元/月),包含域名和 SSL。
- 部署步骤:
- 将项目推送到 GitHub(qian-example)。
- 在 Zeabur 创建服务,绑定 GitHub 仓库。
- 设置 Root Directory 为 packages/cms,Watch Paths 为 packages/cms/package.json。
- 部署完成后,分配域名(qian-example.zeabur.app)。
- 验证:
- 访问线上 Strapi,登录成功,production 模式界面显示(无编辑 Content-Type 功能)。
6. 测试 API
- 创建内容:
- 在 Content Manager 中添加“今日运势”(标题、内容、日期、图片),发布。
- 生成 API Token:
- 在 Settings 创建 Read-only Token(qian-example),保存备用。
- 测试请求:
- 使用 HTTP 客户端(httpie),设置 Authorization(Bearer + Token)。
- 请求地址:https://qian-example.zeabur.app/api/qians。
- 成功返回刚创建的数据,API 搭建完成。
7. 课程总结与建议
- 完成目标:
- 本地搭建并运行 Strapi。
- 创建“每日一签”内容类型。
- 用 Docker 部署到 Zeabur,配置域名。
- 创建并测试 API Token,获取数据。
- 技术方案优势:
- Strapi + TiDB + Zeabur:低成本、高效、可维护的数据接口方案。
- 适合多种前端(如 Next.js)集成。
- 鼓励互动:
- 希望观众点赞、分享视频。
- 遇到问题可通过评论或联系方式提问。
8. 额外说明
- Zeabur 费用:
- 当前用量:半个月 0.42 美元,预计月均 1 美元,可支持 5 个类似项目。
- 推广链接:鼓励使用,支持博主获取分佣。
- 开发流程:
- 本地用 develop 模式配置 Content-Type。
- 线上用 production 模式,仅编辑内容。
核心要点
- 项目进展:完成 Strapi 的本地搭建与 Docker 部署。
- 技术栈:
- Strapi(CMS)+ TiDB(数据库)+ Zeabur(Docker 部署)。
- Mono Repo 管理代码,Docker 确保环境一致性。
- 成果:线上 Strapi 可管理内容并提供 API,前端可调用。
- 学习重点:Strapi 配置、Docker 文件编写、Zeabur 部署流程。
如果你在后续学习中需要帮助(比如配置 TiDB、调试 Docker 或连接 Next.js),可以告诉我,我会继续协助你完善!