背景
基于 NestJS 开发后端服务时,为优化服务器环境配置(规避 Node、MySQL 和 Redis 等组件的独立安装),我们创新性地实现了「一键部署」方案,同时将系统回滚时间精准控制在 30 秒内。
实现方案
采用最小化 Dockerfile(通过多阶段构建仅保留生产依赖):
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3001
CMD ["node","index.js"]
通过 docker-compose.yml 编排 NestJS 和 MySQL 8 服务:
services:
api:
build: ./node-backend
ports: ["3001:3001"]
depends_on: [mysql]
mysql:
image: mysql:8
environment: { MYSQL_ROOT_PASSWORD: root }
实施效果
- 本地测试:通过
docker-compose up --build验证后,已推送镜像至仓库 - 镜像体积:优化至207MB
- 服务器配置:最低仅需1核2G即可运行
- 快速回滚:执行
docker-compose down && up可在30秒内完成版本回退 - 持续集成:已在GitHub Actions中复用相同Dockerfile实现自动化部署
1436

被折叠的 条评论
为什么被折叠?



