当前位置: 首页 > ds >正文

RuoYi-Vue 项目 Docker 全流程部署实战教程

本文以实际项目为例,详细介绍如何用 Docker 一键部署包含前端、后端、MySQL、Redis 的 Spring Boot + Vue + Nginx 全栈项目,零环境依赖,随时迁移服务器。


一、准备工作

1. 环境要求

  • 新机器只需安装好 Docker Desktop(Windows/Mac),或 docker-ce(Linux)。

  • 不需要单独安装 MySQL、Redis、Node、JDK 等环境。

2. 项目结构

提前准备好以下文件和文件夹,整理到一个目录(如 Docker/)下:

Docker/
├── backend/                # 后端jar包
│   └── ruoyi-admin.jar
├── dist/                   # 前端打包目录
│   └── ...(静态资源)
├── mysql_data/             # MySQL数据持久化
├── redis_data/             # Redis数据持久化
├── ry-vue.sql              # 初始化数据库SQL
├── docker-compose.yml      # 一键部署配置文件

3. 前端/后端代码打包

  • 前端(Vue):

cd ruoyi-ui
npm install
npm run build
  • 后端(Spring Boot):

# 方法一(推荐,适用于首次/依赖变化/全量打包)
cd 项目根目录
mvn clean install -U# 方法二(仅限于模块依赖没问题时,快速打包)
cd ruoyi-admin
mvn clean package

二、编写 docker-compose.yml

一个标准的 docker-compose.yml 内容示例:

yaml

version: '3'
services:mysql:image: mysql:8.0container_name: mysqlrestart: alwaysenvironment:MYSQL_ROOT_PASSWORD: 123456MYSQL_DATABASE: ry-vueports:- 3306:3306volumes:- ./mysql_data:/var/lib/mysql- ./ry-vue.sql:/docker-entrypoint-initdb.d/ry-vue.sqlredis:image: redis:7.0container_name: redisrestart: alwaysports:- 6379:6379volumes:- ./redis_data:/databackend:image: openjdk:17-jdkcontainer_name: ruoyi-backendworking_dir: /appcommand: ["java", "-jar", "ruoyi-admin.jar"]volumes:- ./backend/ruoyi-admin.jar:/app/ruoyi-admin.jarports:- 8080:8080depends_on:- mysql- redisenvironment:SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/ry-vue?useUnicode=true&characterEncoding=utf-8&useSSL=falseSPRING_DATASOURCE_USERNAME: rootSPRING_DATASOURCE_PASSWORD: 123456SPRING_REDIS_HOST: redisSPRING_REDIS_PORT: 6379frontend:image: nginx:latestcontainer_name: ruoyi-frontendvolumes:- ./dist:/usr/share/nginx/htmlports:- 80:80

三、一键部署操作

1.打开命令行/PowerShell,切换到 Docker 目录:

cd 路径/到/你的/Docker

2.启动全部服务:

docker compose up -d

首次启动会自动拉取镜像,首次等待时间较长(后续再部署就很快)。

3.查看服务状态:

docker compose ps
  • Up 表示服务启动成功。

4.访问测试:

  • 前端页面:http://localhost/

  • 后端API:http://localhost:8080/

  • 数据库连接(Navicat等):localhost:3306,root/123456

四、常见问题与解决方案

1. MySQL 端口冲突

报错: ports are not available: exposing port ... 3306: bind: ...

  • 说明本机已运行 MySQL。

  • 解决方法:docker-compose.yml3306:3306 改为 3307:3306,用 Navicat 连 localhost:3307

2. 服务未自动初始化数据库

  • 确保 ry-vue.sql 在 Docker 目录,并已正确挂载到 mysql 容器。

  • 首次部署数据会自动导入,后续不会覆盖。

3. 端口被防火墙/安全软件拦截

  • 检查 Docker Desktop 的网络设置。

  • 允许 80、8080、3306、6379 端口。

五、更新和重启服务

前端代码更新: 重新 npm run build,覆盖 dist/ 文件夹,重启 frontend 服务

docker compose restart frontend

后端代码更新: 重新 mvn package,覆盖 backend/ruoyi-admin.jar,重启 backend 服务

docker compose restart backend

关闭所有服务:

docker compose down

六、总结

  • 只需安装 Docker,复制好全部部署文件,一条命令即可完成全套环境搭建,极大简化了开发、迁移和运维流程。

  • 常规更新也只需替换文件夹、重启容器即可,真正做到零环境污染、跨平台无忧。

http://www.xdnf.cn/news/16291.html

相关文章:

  • PS一键图片智能添加噪点脚本 GrainLab for Photoshop安装与使用介绍
  • 5种最佳方法将iPhone语音备忘录传输到Mac
  • esp32 挂载mpu6050实现加速度计
  • Apache POI 实战应用:企业级文档处理解决方案
  • 编写程序,打印图案,要求该图案的行数由用户输入
  • Hadoop磁盘I/O瓶颈的监控与优化:从iostat指标到JBOD vs RAID的深度解析
  • 海思平台移植 CAN 通信全攻略:从硬件到应用
  • 独家|百度副总裁尚国斌即将离职,此前统筹百度地图;行业搜索及智能体业务总经理谢天转岗IDG
  • 最新免费使用Claude Code指南(Windows macOS/Linux)
  • 【Spring Cloud Gateway 实战系列】终极篇:演进方向与未来架构
  • Visual Studio 2010-.Net Framework 4.0-DevExpress安装
  • ADS数据流实现隐藏文件
  • 【AJAX】XMLHttpRequest、Promise 与 axios的关系
  • 动手学深度学习2.0-李沐Pytorch版
  • Windows 10 停服:个人与企业的 “系统选择题”
  • 小程序生命周期及页面操作执行过程详解
  • Lua(数组)
  • day13 flash
  • 根据字符串数组的顺序重新排序 List顺序
  • 基于深度学习的肺癌肿瘤细胞图像识别与分类系统
  • Node.js 版本兼容问题:minimatch@10.0.3和minio@7.0.28 冲突的解决
  • 图机器学习(20)——欺诈交易检测算法
  • 阿里视频直播解决方案VS(MediaMTX + WebRTC) 流媒体解决方案
  • 从零构建:Jenkins与Kubernetes集成的完整指南
  • 10分钟搭建脚手架:Spring Boot 3.2 + Vue3 前后端分离模板
  • 【C# 找最大值、最小值和平均值及大于个数和值】2022-9-23
  • nat. metab.(IF=20.8)|北医三院徐明教授团队:TGR5抑制脂肪酸摄取预防糖尿病性心肌病的机制新解
  • Spark 之 DataFrame
  • GEMINUS 和 Move to Understand a 3D Scene
  • ElasticSearch基础数据查询和管理详解