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...

相关推荐
沃尔威武18 分钟前
调试黑科技:Chrome DevTools时间旅行调试实战
前端·科技·chrome devtools
yuki_uix27 分钟前
虚拟 DOM 与 Diff 算法——React 性能优化的底层逻辑
前端·react.js·面试
yuki_uix28 分钟前
从输入 URL 到页面显示——浏览器工作原理全解析
前端·面试
weixin_408099671 小时前
【完整教程】天诺脚本如何调用 OCR 文字识别 API?自动识别屏幕文字实战(附代码)
前端·人工智能·后端·ocr·api·天诺脚本·自动识别文字脚本
吴声子夜歌1 小时前
ES6——Generator函数详解
前端·javascript·es6
吴声子夜歌1 小时前
ES6——Set和Map详解
前端·javascript·es6
码喽7号1 小时前
vue学习四:Axios网络请求
前端·vue.js·学习
粥里有勺糖2 小时前
视野修炼-技术周刊第129期 | 上一次古法编程是什么时候
前端·javascript·github
whuhewei2 小时前
JS获取CSS动画的旋转角度
前端·javascript·css
蓝黑20202 小时前
Vue组件通信之v-model
前端·javascript·vue