当前位置: 首页 > 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.dtcms.com/a/296984.html

相关文章:

  • 中国、美国、欧盟、日本、英国临床试验API数据接口
  • Ⅹ—6.计算机二级综合题7---10套
  • Mac系统机能连接操控别的平台设备吗?能被远程操作吗?
  • Nginx快速入门及案例
  • 【安卓笔记】解决livedata粘性事件
  • 《Java语言程序设计》第2章复习题(2)
  • RePlugin 坑位使用原理与指南
  • 多源信息融合智能投资【“图神经网络+强化学习“的融合架构】【低配显卡正常运行】
  • 模拟退火算法 (Simulated Annealing, SA)简介
  • JavaWeb学习打卡14(JSP内置对象及作用域)
  • ARM汇编常见伪指令及其用法示例
  • IntelliJ IDEA中管理多版本Git子模块的完整指南
  • 智慧工厂网络升级:新型 SD-WAN 技术架构与应用解析
  • 商场导航软件:3D+AI 基于Deepseek 模型的意图识别技术解析
  • BacNet 是什么?跟 LoRaWAN 的关系是什么?
  • 将JS字节流转化为对象
  • 西安交通大学XJTU 通信/信息工程大三和部分大四 实验和课程答案
  • C++哪些运算符不能被重载?
  • kubernetes集群中部署CoreDNS服务
  • day46day47 通道注意力
  • 一种基于单片机控制的太阳能电池板系统设计
  • 集训Demo6
  • 挖掘录屏宝藏:Screenity 深度解析与使用指南
  • 《计算机网络》实验报告八 加密、数字签名与证书
  • pytest测试框架
  • AUTOSAR进阶图解==>AUTOSAR_SWS_BSWGeneral
  • 【Vue学习笔记】状态管理:Pinia 与 Vuex 的使用方法与对比【附有完整案例】
  • 网络安全入门第一课:信息收集实战手册(2)
  • C语言-指针[变量指针与指针变量]
  • Java 集合框架之----ArrayList