前阵子帮一个项目组部署若依管理系统,他们之前一直是在服务器上手动传 jar 包、手动装 MySQL、手动配 Redis,每次发版都像在开盲盒——环境稍微不对,整套系统就起不来。后来我把这套若依前后端分离版完整挪进 Docker,用 docker compose 一条命令拉起,测试环境的重复搭建从半天缩到几分钟。这篇文章就把我这次完整落地的过程、配置文件和踩过的坑写下来,给准备用 Docker 部署若依管理系统项目的朋友做参考。下面所有操作都是基于 RuoYi-Vue 前后端分离版,最后会单独讲一下若依微服务版和 plus 版本的部署差异。
1. 先搞清楚若依这个系统由哪几块组成,再谈容器化
很多人一上来就急着写 Dockerfile,结果容器起了一大堆,互相连不上,最后全部推倒重来。我建议先花十分钟把若依的架构在脑子里过一遍,后面的所有操作都会顺畅很多。
1.1 前后端分离版的四个核心组成
若依管理系统前后端分离版拆开看,核心就四块:
- MySQL:存业务数据,默认库名是
ry-vue或ry,项目里自带初始化 SQL 脚本,路径一般在sql/ry_xxx.sql。 - Redis:存验证码、Token 会话、部分缓存数据。若依对 Redis 的依赖比你想的深,Redis 挂掉之后,验证码接口会直接报错,登录都会成问题。
- 后端服务:Spring Boot 打包出来的
ruoyi-admin.jar,默认端口 8080,负责所有业务接口。 - 前端服务:Vue 项目,构建后产生一堆静态文件,由 Nginx 托管,Nginx 再通过反向代理把
/prod-api开头的请求转发到后端。
记住这个结构之后,容器化的思路就很清晰了:MySQL 一个容器、Redis 一个容器、后端一个容器、前端一个容器,四个容器组成一个内部网络,互相通过容器名访问。这就是最标准的若依 Docker 部署拓扑。
1.2 单体版和微服务版的部署思路差异
热搜词里频繁出现“若依微服务 plus”,说明很多人其实在纠结到底部署哪个版本。这里先说结论:如果只是做内部管理系统、OA、后台,用户量不大,优先选若依前后端分离单体版,不要上来就搞微服务。
若依微服务版(RuoYi-Cloud)和 plus 增强版,部署复杂度是几何级上升的。微服务版要额外引入 Nacos 注册中心、Sentinel 限流、Gateway 网关,后端会拆成 ruoyi-gateway、ruoyi-auth、ruoyi-system、ruoyi-job 等多个服务。每个服务一个 jar 包,一个 Docker 镜像,启动顺序还有严格依赖——Nacos 必须先起来,否则所有服务注册不上。这些在容器编排里都能实现,但维护成本完全不是一个量级。
我的建议是:**先用单体版把 Docker 部署这套流程跑通,理解容器网络、数据卷、镜像构建这些核心概念,再考虑微服务化。**本文后面主体流程按单体版讲解,微服务版的编排差异放在第 6 章单独说。
1.3 Docker 化能给若依部署带来什么实际收益
手动部署若依的痛,经历过的人都懂:服务器上 JDK 版本冲突、MySQL 字符集不对、Redis 配置文件改乱、前端 node_modules 污染……每个环境都要重复踩一遍。Docker 化之后,至少有三个立竿见影的好处:
一是环境一致性。镜像把 JDK、Node、Nginx 全都固化进去,本地能跑,测试服务器就一定能跑,不会出现“我这儿好好的,你那儿怎么不行”的玄学问题。
二是部署速度。基础镜像拉下来之后,后端构建一个镜像几分钟,前端构建一个镜像几分钟,docker compose up -d 一条命令全部拉起,重复搭建环境从小时级变成分钟级。
三是回滚简单。发版前把当前镜像打个 tag 留底,新版本出问题,直接用旧的 image tag 再 up -d 一次就恢复了,比在服务器上找旧 jar 快太多。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备:安装 Docker 后立刻要做的三件事
2.1 选对 Docker 和 Compose 版本
Linux 服务器上安装 Docker,我一般用官方源安装 docker-ce,不用系统自带的 docker.io,因为自带版本经常比较旧,部分新镜像的特性不支持。安装完成后先确认两件事:
bash复制sudo docker --version
sudo docker compose version
注意,新版 Docker 已经用 docker compose(v2,带空格)替代了老旧的 docker-compose 独立命令。如果你 docker compose version 提示找不到命令,大概率是没装 compose 插件,需要单独安装 docker-compose-plugin 这个包。
Windows 和 Mac 用户直接装 Docker Desktop,后端建议把 WSL 2 集成打开,性能比 Hyper-V 方案好不少。不过我还是推荐用一台 Linux 服务器做正式部署,Docker Desktop 更适合本地开发联调。
2.2 配置镜像加速,避免下载卡死
这是所有新手遇到的第一个大坑:拉取 MySQL、Redis、Nginx 官方镜像时速度感人,或者直接超时。Docker Hub 在境内的访问质量不稳定,解决办法是给 Docker 配置镜像加速源。
Linux 下编辑 /etc/docker/daemon.json:
json复制{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.1ms.run"
]
}
保存后重启生效:
bash复制sudo systemctl daemon-reload
sudo systemctl restart docker
Windows 的 Docker Desktop 在 Settings → Docker Engine 里直接编辑 JSON 配置,同样把 registry-mirrors 填进去,Apply & Restart 即可。
需要注意,镜像加速源属于“谁好用谁知道”的东西,不同地区、不同时间可用性差异很大。配置完之后,先用 docker pull mysql:8.0 实测一下,如果还是慢,换别的可用加速地址就行。
2.3 规划宿主机目录与端口占用
正式部署前,先把目录结构规划好,不然容器一多,数据散落在各个随机路径下,想备份都不知道去哪找。我的习惯是统一放到 /opt/ruoyi/ 下:
text复制/opt/ruoyi/
├── mysql/
│ ├── conf/ # MySQL 自定义配置
│ └
