Docker 一键部署 NestJS + MySQL 避坑指北
背景
后端用 NestJS 写完后,我不想在服务器装 Node、MySQL、Redis 一堆环境,目标是「一个命令」上线,回滚也不超过 30 秒。
做法
-
写最小 Dockerfile(多阶段构建,只留生产依赖):
bashFROM 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 编排在一起:yamlservices: api: build: ./node-backend ports: ["3001:3001"] depends_on: [mysql] mysql: image: mysql:8 environment: { MYSQL_ROOT_PASSWORD: root }
-
本地
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...