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

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.lryc.cn/news/597919.html

相关文章:

  • 【LeetCode数据结构】二叉树的应用(一)——单值二叉树问题、相同的树问题、对称二叉树问题、另一棵树的子树问题详解
  • [数据结构]#6 树
  • JVM Java虚拟机
  • 【Qt开发】信号与槽(一)
  • 机器学习入门指南它来了
  • LeetCodeOJ题:回文链表
  • Java学习----原型模式
  • vant-field 显示radio
  • 【Java】空指针(NullPointerException)异常深度攻坚:从底层原理到架构级防御,老司机的实战经验
  • 高级 JAVA 工程师卷 1
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-20,(知识点:热阻的概念,散热)
  • 专题:2025微短剧行业生态构建与跨界融合研究报告|附100+份报告PDF汇总下载
  • Python 使用环境下编译 FFmpeg 及 PyAV 源码(英特尔篇)
  • 第4章唯一ID生成器——4.1 分布式唯一ID
  • 中小企业安全落地:低成本漏洞管理与攻击防御方案
  • 深度分析Java内存模型
  • 企业级数据分析创新实战:基于表格交互与智能分析的双引擎架构
  • 【REACT18.x】CRA+TS+ANTD5.X实现useImperativeHandle让父组件修改子组件的数据
  • 赋能决策与创新的数据引擎:数据分析平台的价值与未来
  • 增强LLM最后隐藏层的意义与效果
  • 使用 MobaXterm 登录你的阿里云 ECS 实例
  • 常用的Typescript特性
  • python---元组(Tuple)
  • M3066ANL网络变压器,常用于NEC方案机顶盒等网络设备M3066AN实现网络信号的稳定传输与电气隔离保护
  • day 33打卡
  • 傅里叶转换(机器视觉方向)
  • 从 Shell 脚本到 Go 应用:使用 Kiro AI 助手完成 Harpoon 项目重构的完整实践
  • Android NDK与JNI深度解析
  • Day01_C++编程
  • 终端VS命令解释器(Linux Windows)