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

背景

基于 NestJS 开发后端服务时,为优化服务器环境配置(规避 NodeMySQLRedis 等组件的独立安装),我们创新性地实现了「一键部署」方案,同时将系统回滚时间精准控制在 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 编排 NestJSMySQL 8 服务:

services:
  api:
    build: ./node-backend
    ports: ["3001:3001"]
    depends_on: [mysql]
  mysql:
    image: mysql:8
    environment: { MYSQL_ROOT_PASSWORD: root }

实施效果

  1. 本地测试:通过docker-compose up --build验证后,已推送镜像至仓库
  2. 镜像体积:优化至207MB
  3. 服务器配置:最低仅需1核2G即可运行
  4. 快速回滚:执行docker-compose down && up可在30秒内完成版本回退
  5. 持续集成:已在GitHub Actions中复用相同Dockerfile实现自动化部署

相关资源

这个项目需要一键部署,我需要写一个一键部署的脚本代码 一、前端用的是Svelte + SvelteKit + Vite + TailwindCSS 二、后端用的是NestJS + TypeORM + PostgreSQL,使用TypeScript开发 三、数据库用的是PostgreSQL 四、项目目录有 .git/:Git 版本控制相关文件夹 .github/:GitHub 配置和工作流 .vscode/:VSCode 编辑器配置 cli/:命令行工具相关代码 deployment/:部署相关配置和脚本 design/:设计资源 docker/:Docker 配置文件 docs/:项目文档 e2e/:端到端测试 fastlane/:移动端自动化相关 immich-app/:应用相关代码(可能为桌面端或集成端) machine-learning/:机器学习相关代码 misc/:其他杂项 mobile/:移动端(如 React Native 或 Flutter)相关代码 open-api/:OpenAPI 相关定义和 SDK readme_i18n/:多语言 README server/:后端服务(NestJS) web/:前端 Web 应用(Svelte/SvelteKit) 以及一些根目录下的配置文件(.gitignore、README.md、LICENSE、Makefile ……)。采用前后端分离结构,包含 Web 前端、后端服务、移动端、CLI 工具、部署与文档等多个子模块。 五、部署到Linux环境 六、支持ubuntu操作系统 七、需要自动完成 1, 脚本安装先是系统环境要满足要求, 就是为部署先提供好必要的环境组件,如:gcc等 2,下载算法镜像,让镜像跑起来 3,开放镜像环境需要在系统的端口实现外部的访问。 4. 中间可以给出设置业务端口的步骤 5. 通过脚本一次性跑完全流程 八、项目有用到Docker
05-28
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值