Docker 一键部署 NestJS + MySQL 避坑指北

Docker 一键部署 NestJS + MySQL 避坑指北

背景

后端用 NestJS 写完后,我不想在服务器装 Node、MySQL、Redis 一堆环境,目标是「一个命令」上线,回滚也不超过 30 秒。

做法

  1. 写最小 Dockerfile(多阶段构建,只留生产依赖):

    bash 复制代码
    FROM node:20-alpine
    WORKDIR /app
    COPY package*.json ./
    RUN npm ci --omit=dev
    COPY . .
    EXPOSE 3001
    CMD ["node","index.js"]
  2. docker-compose.yml 把 NestJS 和 MySQL 8 编排在一起:

    yaml 复制代码
    services:
      api:
        build: ./node-backend
        ports: ["3001:3001"]
        depends_on: [mysql]
      mysql:
        image: mysql:8
        environment: { MYSQL_ROOT_PASSWORD: root }
  3. 本地 docker-compose up --build 跑通,再 docker push 到仓库镜像。

结果

  • 镜像 207 MB,服务器 1 核 2 G 即可跑
  • docker-compose down && up 30 秒完成回滚
  • 同样 Dockerfile 用在 CI,GitHub Actions 自动部署。

源码/Compose 文件
github.com/web-code-hu...

Docker Compose: github.com/web-code-hu...

相关推荐
cyadyx38 分钟前
Vite 比 Webpack 构建效率更高
前端·webpack·node.js·vite
mCell2 小时前
AI 时代 SVG 画图的潜力
前端·agent·svg
我命由我123458 小时前
CesiumJS 笔记 - 获取容器中心点、Cartesian3 clone 方法、修改 Cartesian3 对象的高度
前端·javascript·css·前端框架·html·html5·js
Hopebearer_9 小时前
页面突然只剩 DOM?一次静态资源版本错配排查
前端·部署
东风破_9 小时前
ESLint 是什么?为什么你的项目需要它?
前端·后端·代码规范
圣殿骑士-Khtangc11 小时前
Go字符串高效拼接性能对比与底层原理分析
服务器·前端·golang
BigTopOne12 小时前
【ijkplayer】 硬解码流程
前端
kyriewen12 小时前
DeepSeek Harness开源第一天我就上手了——和Claude Code的差距比想象中大
前端·ai编程·deepseek
捡田螺的小男孩12 小时前
什么是 Skill?手把手带你写一个简单有用的 Skill!
前端·后端·程序员
IT_陈寒12 小时前
Redis集群这个坑,差点让我通宵
前端·人工智能·后端