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

相关推荐
wordbaby3 分钟前
Flutter Form Builder 完全指南:告别 Controller 地狱
前端·flutter
A***071716 分钟前
React数据可视化应用
前端·react.js·信息可视化
泉城老铁1 小时前
Vue2实现语音报警
前端·vue.js·架构
临江仙4551 小时前
前端骚操作:用户还在摸鱼,新版本已悄悄上线!一招实现无感知版本更新通知
前端·vue.js
想个什么名好呢1 小时前
解决uniapp的H5项目uni-popup页面滚动穿透bug
前端
用户93816912553601 小时前
Vue3项目--mock数据
前端
前端加油站2 小时前
一种新HTML 页面转换成 PDF 技术方案
前端·javascript·vue.js
w***Q3502 小时前
Vue打包
前端·javascript·vue.js
有事没事实验室2 小时前
router-link的custom模式
前端·javascript·vue.js
常乐我净6162 小时前
十、路由和导航
前端