用Docker Compose三分钟搭建RuoYi-Cloud微服务全家桶
在微服务架构盛行的当下,Spring Cloud Alibaba生态已成为企业级开发的热门选择。RuoYi-Cloud作为基于该生态的权限管理系统,集成了Nacos、Sentinel等核心组件,但传统部署方式需要逐个安装配置十余个服务,对开发者极不友好。本文将演示如何通过Docker Compose实现"一条命令启动全家桶",让环境搭建从小时级缩短到分钟级。
1. 环境架构设计
RuoYi-Cloud的标准部署包含以下核心服务:
- 基础服务层:MySQL 5.7、Redis 6
- 注册中心:Nacos 2.1.0
- 流量治理:Sentinel 1.8.0
- 应用服务:
- RuoYi-Gateway(网关)
- RuoYi-Auth(认证中心)
- RuoYi-System(系统模块)
- RuoYi-Monitor(监控中心)
- 前端服务:Nginx + Vue构建产物
传统部署方式需要手动安装JDK、Node.js、MySQL等基础环境,再逐个启动微服务组件。而容器化方案通过以下设计实现自动化:
version: '3.8' services: nacos: image: nacos/nacos-server:v2.1.0 environment: - MODE=standalone ports: - "8848:8848" redis: image: redis:6-alpine ports: - "6379:6379"提示:Nacos 2.x版本需要保持8848端口映射,这是控制台默认端口。生产环境建议配置持久化卷。
2. 关键配置解析
2.1 服务依赖管理
微服务启动存在严格顺序要求:
- 基础设施(MySQL、Redis)
- 注册中心(Nacos)
- 监控组件(Sentinel)
- 业务服务(按依赖顺序启动)
通过Docker Compose的depends_on和健康检查实现:
ruoyi-gateway: image: ruoyi-cloud-gateway:latest depends_on: nacos: condition: service_healthy redis: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"] interval: 30s2.2 网络配置技巧
建议创建独立网络避免端口冲突:
docker network create ruoyi-net在compose文件中声明网络:
networks: ruoyi-net: driver: bridge ipam: config: - subnet: 172.28.0.0/16服务间通过容器名通信,例如Gateway连接Auth服务:
spring.cloud.nacos.discovery.server-addr=nacos:88483. 实战部署流程
3.1 准备部署文件
项目目录结构建议:
ruoyi-cloud-docker/ ├── docker-compose.yml ├── config/ │ ├── nacos/ │ ├── mysql/ ├── sql/ │ └── init.sql └── apps/ ├── gateway.jar ├── auth.jar关键操作步骤:
- 下载官方发布的Docker镜像或自行构建
- 初始化数据库脚本放入
/docker-entrypoint-initdb.d - 配置Nacos持久化数据卷:
volumes: nacos-data: driver: local3.2 一键启动命令
启动全部服务并后台运行:
docker-compose up -d实时查看日志:
docker-compose logs -f ruoyi-gateway服务状态检查:
docker-compose ps4. 常见问题排查
4.1 启动超时处理
若服务启动失败,典型原因包括:
- 数据库连接失败:检查MySQL容器是否正常启动
- Nacos未就绪:增加服务启动等待时间
environment: SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/ry-cloud?useSSL=false&serverTimezone=UTC SPRING_CLOUD_NACOS_CONNECT_TIMEOUT: 300004.2 性能调优建议
开发环境可限制资源使用:
deploy: resources: limits: cpus: '0.5' memory: 512M生产环境推荐配置:
- MySQL单独部署物理机
- Redis启用持久化
- Nacos集群部署
5. 进阶使用技巧
5.1 动态扩展实例
横向扩展Gateway服务:
docker-compose up -d --scale ruoyi-gateway=35.2 版本升级策略
采用蓝绿部署方案:
- 构建新版本镜像并推送到仓库
- 修改compose文件中的镜像标签
- 执行滚动更新:
docker-compose pull && docker-compose up -d5.3 监控集成方案
Prometheus监控配置示例:
ruoyi-monitor: image: prom/prometheus:v2.30 ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml配套的Grafana仪表盘可直观展示:
- JVM内存使用
- 接口QPS
- 数据库连接池状态