news 2026/5/1 19:42:31

手把手教你用Docker Compose一键部署RuoYi-Cloud微服务全家桶(含Nacos、Redis、MySQL)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你用Docker Compose一键部署RuoYi-Cloud微服务全家桶(含Nacos、Redis、MySQL)

容器化部署RuoYi-Cloud微服务全家桶实战指南

容器化部署的价值与优势

在微服务架构日益普及的今天,开发环境的一致性问题成为许多团队面临的挑战。传统本地部署方式需要手动安装配置Nacos、Redis、MySQL等中间件,不仅耗时耗力,还容易因环境差异导致"在我机器上能运行"的经典问题。容器化技术通过标准化环境定义,完美解决了这一痛点。

Docker Compose作为多容器编排工具,允许开发者通过一个YAML文件定义整套服务栈。对于RuoYi-Cloud这样的微服务系统,使用Docker Compose可以:

  • 一键启动所有依赖服务和业务模块
  • 环境隔离避免端口冲突和依赖污染
  • 配置固化确保团队每个成员使用完全相同的环境
  • 快速重置测试完成后可立即清理,不留残余

1. 环境准备与Docker配置

1.1 系统要求与Docker安装

确保宿主机满足以下最低配置:

  • 操作系统:Linux/Windows 10+/macOS(建议使用Linux获得最佳性能)
  • 内存:8GB以上(微服务系统较耗内存)
  • Docker版本:20.10.0+
  • Docker Compose版本:1.29.0+

对于Windows用户,需要特别注意:

  1. 启用WSL2后端(Windows 10 2004及以上版本)
  2. 在Docker Desktop设置中分配至少4GB内存
  3. 关闭可能冲突的端口(如3306、8848等)
# 验证Docker安装 docker --version docker-compose --version # 检查Docker运行状态 docker system info

1.2 项目文件准备

从Gitee获取RuoYi-Cloud最新代码:

git clone https://gitee.com/y_project/RuoYi-Cloud.git cd RuoYi-Cloud

项目结构关键目录说明:

├── docker-compose.yml # 容器编排主文件 ├── nacos # Nacos配置中心Docker配置 ├── mysql # 数据库初始化脚本 ├── redis # Redis配置文件 └── ruoyi-modules # 各业务模块Dockerfile

2. Docker Compose核心配置解析

2.1 编排文件架构设计

我们设计的docker-compose.yml包含以下服务组:

version: '3.8' services: nacos-server: image: nacos/nacos-server:2.0.3 # ...其他配置 mysql-master: image: mysql:8.0.25 # ...其他配置 redis: image: redis:6.2.5 # ...其他配置 ruoyi-gateway: build: ./ruoyi-gateway # ...其他配置 # 其他微服务模块...

2.2 网络与存储配置

自定义网络确保服务间隔离通信:

networks: ruoyi-net: driver: bridge ipam: config: - subnet: 172.28.0.0/16

数据卷配置实现数据持久化:

volumes: mysql-data: nacos-data: redis-data:

2.3 关键服务参数详解

以Nacos服务为例展示详细配置:

nacos-server: image: nacos/nacos-server:2.0.3 container_name: nacos-server environment: - MODE=standalone - SPRING_DATASOURCE_PLATFORM=mysql - MYSQL_SERVICE_HOST=mysql-master - MYSQL_SERVICE_DB_NAME=ry-config - MYSQL_SERVICE_USER=root - MYSQL_SERVICE_PASSWORD=123456 ports: - "8848:8848" volumes: - nacos-data:/home/nacos/data networks: - ruoyi-net healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8848/nacos"] interval: 30s timeout: 10s retries: 3

3. 数据库与中间件配置

3.1 MySQL容器化配置

MySQL服务配置要点:

  • 预设三个数据库:ry-cloudry-configry-seata
  • 自动执行初始化SQL脚本
  • 配置合理的字符集和事务隔离级别
mysql-master: image: mysql:8.0.25 container_name: mysql-master environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: ry-cloud TZ: Asia/Shanghai command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --transaction-isolation=READ-COMMITTED ports: - "3306:3306" volumes: - mysql-data:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d networks: - ruoyi-net

3.2 Redis优化配置

Redis生产级配置建议:

redis: image: redis:6.2.5 container_name: redis command: redis-server --appendonly yes --requirepass 123456 ports: - "6379:6379" volumes: - redis-data:/data - ./redis/redis.conf:/usr/local/etc/redis/redis.conf networks: - ruoyi-net

redis.conf关键修改:

maxmemory 1gb maxmemory-policy allkeys-lru timeout 300 tcp-keepalive 60

4. 微服务容器化实践

4.1 构建自定义镜像

每个微服务模块需要提供Dockerfile,以网关服务为例:

# ruoyi-gateway/Dockerfile FROM openjdk:11-jre-slim WORKDIR /app COPY target/ruoyi-gateway.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","app.jar"]

构建命令:

# 在项目根目录执行 mvn clean package -DskipTests docker-compose build ruoyi-gateway

4.2 服务依赖与启动顺序控制

使用depends_on结合健康检查确保启动顺序:

ruoyi-gateway: build: ./ruoyi-gateway depends_on: nacos-server: condition: service_healthy redis: condition: service_started networks: - ruoyi-net

4.3 配置管理最佳实践

  1. Nacos配置集中管理

    • 将各模块application.yml配置迁移到Nacos
    • 使用shared-configs实现配置共享
    • 区分dev/test/prod不同环境配置
  2. 敏感信息处理

    spring: datasource: password: ${MYSQL_PASSWORD:123456}

    通过环境变量传入敏感信息

5. 系统部署与运维

5.1 一键启动与停止

启动完整系统:

docker-compose up -d

停止并清理:

docker-compose down

5.2 常用运维命令

查看服务日志:

docker-compose logs -f ruoyi-gateway

服务扩缩容:

docker-compose up -d --scale ruoyi-system=3

5.3 性能监控方案

集成Prometheus+Grafana监控栈:

monitoring: image: prom/prometheus ports: - "9090:9090" volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml

示例prometheus.yml配置:

scrape_configs: - job_name: 'ruoyi-cloud' metrics_path: '/actuator/prometheus' static_configs: - targets: ['ruoyi-gateway:8080', 'ruoyi-system:9201']

6. 常见问题排查指南

6.1 容器启动失败排查步骤

  1. 查看容器日志:

    docker logs -f <container_id>
  2. 检查服务依赖:

    docker-compose ps
  3. 验证网络连通性:

    docker exec -it ruoyi-gateway curl nacos-server:8848

6.2 典型问题解决方案

问题1:Nacos无法连接MySQL

  • 检查MySQL容器是否正常运行
  • 验证Nacos中配置的MySQL用户名密码
  • 确认网络是否互通

问题2:Redis连接超时

  • 检查Redis密码配置
  • 验证各模块的Redis地址配置
  • 查看Redis内存使用情况

问题3:微服务注册失败

  • 确认Nacos控制台是否可访问
  • 检查各服务的spring.cloud.nacos.discovery配置
  • 查看服务IP是否在Nacos白名单中

7. 生产环境优化建议

7.1 安全加固措施

  1. 修改默认密码

    • MySQL root密码
    • Redis访问密码
    • Nacos控制台密码
  2. 网络隔离

    networks: ruoyi-net: internal: true
  3. 镜像安全扫描

    docker scan <image_name>

7.2 性能调优参数

JVM调优建议(Dockerfile):

ENV JAVA_OPTS="-Xms512m -Xmx512m -XX:MaxMetaspaceSize=256m" ENTRYPOINT exec java $JAVA_OPTS -jar app.jar

MySQL性能参数:

command: --innodb_buffer_pool_size=256M --innodb_log_file_size=128M

7.3 高可用方案设计

生产环境建议架构:

  • Nacos集群:3节点部署
  • MySQL主从:读写分离
  • Redis哨兵:自动故障转移
  • 微服务多实例:负载均衡
nacos-server: deploy: replicas: 3

8. 进阶扩展与定制

8.1 自定义模块添加

添加新微服务模块步骤:

  1. ruoyi-modules创建新模块
  2. 编写Dockerfile
  3. 在compose文件中添加服务定义
  4. 配置Nacos服务发现

8.2 CI/CD集成示例

.gitlab-ci.yml示例片段:

stages: - build - deploy build: stage: build script: - mvn clean package -DskipTests - docker-compose build deploy: stage: deploy script: - docker-compose up -d

8.3 多环境配置管理

使用Compose扩展功能:

# docker-compose.prod.yml services: ruoyi-gateway: environment: - SPRING_PROFILES_ACTIVE=prod

启动命令:

docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 19:41:24

终极MASA模组中文汉化包:让Minecraft专业工具说中文的完整指南

终极MASA模组中文汉化包&#xff1a;让Minecraft专业工具说中文的完整指南 【免费下载链接】masa-mods-chinese 一个masa mods的汉化资源包 项目地址: https://gitcode.com/gh_mirrors/ma/masa-mods-chinese 还在为Minecraft中的英文模组界面而烦恼吗&#xff1f;MASA全…

作者头像 李华
网站建设 2026/5/1 19:34:02

视频下载神器:这款Chrome插件让你轻松保存在线视频内容

视频下载神器&#xff1a;这款Chrome插件让你轻松保存在线视频内容 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是不是经常在网上看到精…

作者头像 李华
网站建设 2026/5/1 19:33:52

MQ136传感器数据校准与干扰排除实战:让你的MicroPython环境监测更精准

MQ136传感器数据校准与干扰排除实战&#xff1a;让你的MicroPython环境监测更精准 厨房里飘来的油烟味突然触发了警报&#xff0c;但实际检测到的硫化氢浓度却忽高忽低——这是许多开发者在使用MQ136传感器时遇到的典型困扰。当基础数据读取已经实现&#xff0c;如何让这些数字…

作者头像 李华
网站建设 2026/5/1 19:29:24

腐蚀-Rust-服务器开服联机教程

前言&#xff1a; 推荐云服务平台&#xff1a;购买实例 该服务器目前商业行为很多&#xff0c;同行之间互相攻击服务器&#xff0c;所以服务器默认不提供列表查询 正因为服务器商业行为较多&#xff0c;所以该游戏服务器高度依赖插件模组&#xff0c;原版白皮不是很好玩 存档…

作者头像 李华
网站建设 2026/5/1 19:29:23

不花一分钱,在 VS Code 里用上 Claude Code,配置一次永久免费!

一个喜欢薅羊毛的开发者 Claude Code 是目前公认的最强 AI 编程工具&#xff0c;但它直接调用 Anthropic API&#xff0c;费用不低。今天这个开源项目彻底解决了这个问题——把 Claude Code 的 API 请求转发到免费或低价模型&#xff0c;让你白嫖 Claude Code。本文手把手带你在…

作者头像 李华