告别手动编译!用Docker Compose一键拉起RuoYi-flowable+MySQL+Redis全家桶
现代化微服务开发环境:基于Docker Compose的RuoYi-flowable全栈解决方案
在当今快节奏的软件开发领域,快速搭建稳定、可复用的开发环境已成为提升团队效率的关键。传统手动部署方式不仅耗时费力,还容易因环境差异导致"在我机器上能运行"的经典问题。本文将介绍如何利用Docker Compose技术,一键部署包含RuoYi-flowable工作流系统、MySQL数据库和Redis缓存的全栈开发环境,实现从零到可用的分钟级搭建。
1. 技术栈全景解析
RuoYi-flowable是基于流行开源框架组合构建的企业级工作流解决方案,其技术栈设计体现了现代Web应用的典型分层架构:
前端技术组合 :
- Vue.js 2.x:轻量级渐进式前端框架
- Element UI:企业级UI组件库
- Axios:Promise-based HTTP客户端
后端技术组合 :
- Spring Boot 2.x:快速应用开发框架
- Spring Security:认证与授权解决方案
- Flowable 6.5:轻量级业务流程引擎
- MyBatis:持久层框架
- Redis:高性能缓存数据库
基础设施层 :
- Docker:容器化运行时环境
- Docker Compose:多容器编排工具
- MySQL 8:关系型数据库
- Nginx:Web服务器与反向代理
这种架构设计使得系统既保持了Spring生态的稳定性,又通过Flowable实现了复杂的业务流程管理能力。而Docker技术的引入,则彻底解决了环境一致性问题。
2. 环境准备与配置
2.1 系统要求
在开始部署前,请确保开发机满足以下基本要求:
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 10/WSL2, macOS 10.15+, Linux kernel 4.x+ | Linux kernel 5.x+ |
| Docker引擎 | 20.10.0+ | 23.0.0+ |
| Docker Compose | 1.29.0+ | 2.17.0+ |
| 内存 | 4GB | 8GB+ |
| 磁盘空间 | 10GB可用 | 20GB+ SSD |
提示:Windows用户建议使用WSL2后端运行Docker,可获得接近原生的性能体验
2.2 项目结构说明
下载的部署包包含以下核心文件:
RuoYi-flowable/
├── docker-compose.yaml # 多容器编排定义文件
├── .env # 环境变量配置文件
├── sql/ # 数据库初始化脚本目录
│ ├── quartz.sql # 定时任务表结构
│ ├── ry_20230210.sql # 业务数据表结构
│ └── ry_config.sql # 系统配置数据
├── nginx.conf # Nginx服务器配置
└── supervisord.conf # 进程管理配置
这种结构设计遵循了"配置即代码"的理念,所有环境定义都可以通过版本控制系统进行管理。
3. Docker Compose深度解析
3.1 服务编排设计
docker-compose.yaml 文件定义了三个核心服务:
version: '3.8'
services:
flow-app:
image: wbsu2003/flowable:v1
environment:
- SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL}
- SPRING_REDIS_HOST=${REDIS_HOST}
ports:
- "12880:80"
depends_on:
- flow-mysql
- flow-redis
flow-mysql:
image: mysql:8
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
- ./sql:/docker-entrypoint-initdb.d
flow-redis:
image: redis:6.2
volumes:
- redis_data:/data
volumes:
mysql_data:
redis_data:
这种设计实现了:
- 服务隔离:每个组件运行在独立容器中
- 持久化存储:数据库数据通过volume持久化
- 依赖管理:应用服务等待数据库就绪后才启动
3.2 环境变量配置
.env 文件采用KEY=VALUE格式定义环境变量:
# MySQL配置
MYSQL_ROOT_PASSWORD=flowable123
MYSQL_DATABASE=flowable
# Redis配置
REDIS_HOST=flow-redis
REDIS_PORT=6379
# 应用配置
SPRING_DATASOURCE_URL=jdbc:mysql://flow-mysql:3306/flowable?useSSL=false
环境变量的使用使得配置与代码分离,可以轻松适应不同部署环境而无需修改容器镜像。
4. 系统部署与验证
4.1 一键启动命令
在包含 docker-compose.yaml 的目录中执行:
# 启动所有服务(后台模式)
docker-compose up -d
# 查看服务状态
docker-compose ps
# 查看应用日志
docker-compose logs -f flow-app
系统启动后会自动执行以下流程:
- 拉取所需的Docker镜像(首次运行)
- 启动MySQL容器并初始化数据库
- 启动Redis容器
- 启动应用容器并连接数据库
4.2 系统访问与验证
服务启动完成后,通过浏览器访问:
http://localhost:12880
使用默认凭证登录:
- 用户名:admin
- 密码:admin123
成功登录后,您将看到RuoYi-flowable的主控制台,可以开始工作流的设计与管理。
注意:首次访问时系统可能仍在初始化,若遇到连接问题请稍后重试或检查容器日志
5. 高级配置与优化
5.1 性能调优建议
对于生产环境部署,建议调整以下参数:
MySQL配置优化 :
[mysqld]
innodb_buffer_pool_size=1G
innodb_log_file_size=256M
max_connections=200
JVM参数调整 :
# 在docker-compose.yaml中为flow-app服务添加
environment:
- JAVA_OPTS=-Xms1g -Xmx2g -XX:+UseG1GC
5.2 自定义工作流设计
RuoYi-flowable内置了Flowable Modeler,可通过以下步骤设计业务流程:
- 登录系统后进入"工作流"->"模型管理"
- 点击"新建模型"创建BPMN流程图
- 使用拖拽方式设计流程节点
- 设置各节点的审批人与表单
- 部署模型到流程引擎
典型请假审批流程示例:
<bpmn2:process id="leaveProcess" name="请假流程">
<bpmn2:startEvent id="startEvent"/>
<bpmn2:userTask id="deptLeaderAudit" name="部门领导审批"/>
<bpmn2:exclusiveGateway id="exclusiveGateway"/>
<bpmn2:userTask id="hrAudit" name="HR备案"/>
<bpmn2:endEvent id="endEvent"/>
</bpmn2:process>
6. 日常运维管理
6.1 常用运维命令
# 停止所有服务(保留数据)
docker-compose stop
# 重启特定服务
docker-compose restart flow-app
# 完全移除所有容器和网络(保留数据卷)
docker-compose down
# 完全清理(包括数据卷)
docker-compose down -v
# 备份MySQL数据
docker exec flow-mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > backup.sql
6.2 日志收集与分析
建议配置集中式日志收集:
# 查看实时日志
docker-compose logs -f
# 导出日志到文件
docker-compose logs > ruoyi-flowable.log
# 使用ELK栈收集日志(docker-compose扩展)
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.17.0
logstash:
image: docker.elastic.co/logstash/logstash:7.17.0
kibana:
image: docker.elastic.co/kibana/kibana:7.17.0
7. 故障排查指南
7.1 常见问题解决
应用启动失败 :
- 检查数据库连接:
docker exec -it flow-mysql mysql -uroot -p - 验证Redis连通性:
docker exec -it flow-redis redis-cli ping
流程设计器无法访问 :
- 检查Nginx配置:
docker exec -it flow-app cat /etc/nginx/nginx.conf - 重启前端服务:
docker exec -it flow-app nginx -s reload
7.2 性能监控方案
建议部署监控系统跟踪关键指标:
# 使用cAdvisor监控容器资源
docker run -d \
--name=cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
gcr.io/cadvisor/cadvisor:v0.47.0
访问 http://localhost:8080 即可查看容器级别的CPU、内存、网络等监控数据。
8. 扩展与集成
8.1 与企业现有系统集成
RuoYi-flowable提供多种集成方式:
REST API集成 :
// Spring Boot示例代码
@RestController
@RequestMapping("/api/workflow")
public class WorkflowController {
@Autowired
private RuntimeService runtimeService;
@PostMapping("/start")
public String startProcess(@RequestBody Map<String, Object> variables) {
return runtimeService.startProcessInstanceByKey(
"leaveProcess", variables).getId();
}
}
消息队列集成 (以RabbitMQ为例):
# 在docker-compose.yaml中添加
services:
rabbitmq:
image: rabbitmq:3-management
ports:
- "15672:15672"
8.2 自定义开发扩展
如需二次开发,建议采用以下工作流:
- 克隆源码仓库:
git clone https://gitee.com/tony2y/RuoYi-flowable.git - 修改代码后重新构建镜像:
docker build -t custom/flowable:latest . - 更新
docker-compose.yaml中的镜像引用 - 重新部署服务
这种基于容器化的开发模式确保了开发、测试、生产环境的高度一致性。
更多推荐



所有评论(0)