2. 环境准备:Node.js 与 NestJS CLI 安装、MinIO 服务 Docker 部署、Postman/Thunder Client 安装

在开始构建 MinIO 对象存储中间件之前,必须搭建一套完整、可复现的开发环境。本章将依次完成以下四项核心准备工作:Node.js 运行时、NestJS CLI 脚手架、MinIO 对象存储服务(Docker 部署)以及 API 调试工具(Postman / Thunder Client)。

💡 版本一致性提示:本课程所有代码和配置均基于 Node.js 18 LTS、NestJS 10.x、MinIO RELEASE.2024-01 系列。请尽量保持版本一致,避免因大版本差异导致 API 行为异常。

2.1 Node.js 与 npm 安装

Node.js 是 NestJS 的运行基础,npm 是包管理工具。推荐使用 nvm (Node Version Manager) 管理多版本,便于后续切换。

安装步骤(macOS / Linux)

  1. 安装 nvm:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
  2. 重新加载终端配置:source ~/.bashrc 或 source ~/.zshrc
  3. 安装 Node.js 18 LTS:nvm install 18
  4. 设置为默认版本:nvm alias default 18
  5. 验证安装:node -v(应输出 v18.x.x)
    npm -v(应输出 9.x.x 或 10.x.x)

Windows 用户

直接访问 nodejs.org 下载 18 LTS 安装包,安装完成后自动包含 npm。建议勾选“Add to PATH”。

组件 最低版本 推荐版本 验证命令
Node.js 16.x 18.18.x LTS node -v
npm 8.x 9.8.x / 10.x npm -v
nvm(可选) 0.39.x 0.39.7 nvm --version
⚠️ 常见问题:如果 node -v 显示旧版本,请检查 PATH 环境变量中是否混入了其他 Node.js 安装路径。使用 which node(macOS/Linux)或 where node(Windows)定位实际执行文件。

2.2 NestJS CLI 安装与项目初始化

NestJS CLI 提供 nest new 命令快速生成项目骨架,并内置了模块、控制器、服务等代码生成器。

全局安装 NestJS CLI

npm install -g @nestjs/cli

验证安装

nest --version  # 应输出 10.x.x

创建课程项目

nest new nest-minio-course
cd nest-minio-course

CLI 会询问使用哪种包管理器(npm / yarn / pnpm),选择 npm 即可。项目创建完成后,目录结构如下:

nest-minio-course/
├── src/
│   ├── app.controller.ts
│   ├── app.controller.spec.ts
│   ├── app.module.ts
│   ├── app.service.ts
│   └── main.ts
├── test/
├── .eslintrc.js
├── .prettierrc
├── nest-cli.json
├── package.json
├── tsconfig.json
└── tsconfig.build.json
📌 后续章节将在 src/ 下创建 minio/ 模块,并编写中间件逻辑。保持项目结构整洁是架构设计的第一步。

2.3 MinIO 服务 Docker 部署

MinIO 是兼容 Amazon S3 协议的高性能对象存储系统。使用 Docker 单节点部署,适合本地开发和测试。

拉取 MinIO 镜像

docker pull minio/minio:RELEASE.2024-01-16T22-38-06Z

启动 MinIO 容器

docker run -d \
  --name minio-server \
  -p 9000:9000 \
  -p 9001:9001 \
  -e MINIO_ROOT_USER=admin \
  -e MINIO_ROOT_PASSWORD=password123 \
  -v ~/minio-data:/data \
  minio/minio:RELEASE.2024-01-16T22-38-06Z \
  server /data --console-address ":9001"
参数 说明 本课程使用值
-p 9000:9000 API 端口(S3 兼容) 9000
-p 9001:9001 Web 控制台端口 9001
MINIO_ROOT_USER 管理员用户名 admin
MINIO_ROOT_PASSWORD 管理员密码(至少 8 位) password123
-v ~/minio-data:/data 数据持久化挂载 ~/minio-data

验证 MinIO 服务

  1. 打开浏览器访问 http://localhost:9001,使用 admin / password123 登录 Web 控制台。
  2. 在控制台中创建一个名为 nestjs-bucket 的存储桶(Bucket),用于后续课程实验。
  3. 使用命令行测试 API 连通性:
    curl http://localhost:9000/minio/health/live,应返回 {"status":"alive"}。
🔐 生产环境注意:本课程使用明文密码仅用于本地开发。生产环境请使用 MinIO 的 IAM 策略、TLS 证书和密钥管理服务(KMS)。
MinIO Docker 部署架构 宿主机 (Host) Docker 引擎 MinIO 容器 minio/minio:RELEASE.2024-01 API 端口: 9000 Console 端口: 9001 用户: admin / password123 数据持久化卷 宿主机路径: ~/minio-data 容器路径: /data 存储桶: nestjs-bucket 挂载 NestJS 应用 → localhost:9000

2.4 API 调试工具安装

本课程提供两种调试工具选项:Postman(功能全面,适合团队协作)和 Thunder Client(轻量级 VS Code 插件,适合个人开发)。

Postman 安装

  1. 访问 postman.com/downloads,下载对应操作系统版本。
  2. 安装后注册/登录账号(免费版即可)。
  3. 创建集合(Collection)命名为 NestJS-MinIO,用于组织所有 API 请求。

Thunder Client 安装

  1. 在 VS Code 扩展市场搜索 Thunder Client,点击安装。
  2. 安装完成后,左侧活动栏出现 Thunder Client 图标。
  3. 创建环境变量:BASE_URL = http://localhost:3000,方便后续切换。
特性 Postman Thunder Client
安装方式 独立桌面应用 VS Code 插件
集合/环境管理 ✅ 云端同步 ✅ 本地 JSON
自动化测试 ✅ 内置 Runner ⚠️ 需脚本
团队协作 ✅ 共享工作区 ❌ 无原生协作
本课程推荐 团队/教学场景 个人快速调试
📌 后续章节将使用 Postman 演示 API 请求示例,但所有接口同样兼容 Thunder Client。选择你最顺手的工具即可。

2.5 环境验证清单

完成上述安装后,执行以下命令进行全链路验证:

# 1. Node.js 版本
node -v                     # v18.18.0

# 2. npm 版本
npm -v                      # 9.8.1

# 3. NestJS CLI 版本
nest --version              # 10.3.0

# 4. Docker 容器状态
docker ps | grep minio      # 应显示 minio-server 运行中

# 5. MinIO API 健康检查
curl http://localhost:9000/minio/health/live
# 返回: {"status":"alive"}

# 6. MinIO Web 控制台
# 浏览器打开 http://localhost:9001,登录后能看到存储桶列表