当前位置: 首页 > news >正文

M1 MacBook Pro上从零部署RuoYi-Cloud微服务框架(含Docker镜像避坑指南)

M1 MacBook Pro上从零部署RuoYi-Cloud微服务框架含Docker镜像避坑指南作为一位长期使用Apple Silicon架构MacBook Pro的Java开发者我深刻理解在ARM芯片环境下搭建微服务框架时可能遇到的各种坑。本文将分享如何在M1/M2芯片的Mac上从零开始部署RuoYi-Cloud微服务框架特别是针对Docker镜像兼容性问题的解决方案。1. 环境准备与工具安装1.1 硬件与系统要求在开始之前请确保您的设备满足以下最低要求设备型号2020年后发布的M1/M2芯片MacBook Pro/Air或Mac mini操作系统macOS Monterey (12.0) 或更高版本内存建议16GB及以上存储空间至少20GB可用空间小贴士虽然8GB内存也能运行但在同时启动多个微服务模块时可能会遇到性能瓶颈。1.2 必备软件安装JDK安装ARM原生版本# 使用Homebrew安装Azul Zulu JDKARM原生版本 brew tap homebrew/cask-versions brew install --cask zulu8验证安装java -version # 应显示类似以下信息 # openjdk version 1.8.0_362 # OpenJDK Runtime Environment (Zulu 8.68.0.21-CA-macos-aarch64) (build 1.8.0_362-b09) # OpenJDK 64-Bit Server VM (Zulu 8.68.0.21-CA-macos-aarch64) (build 25.362-b09, mixed mode)Docker Desktop for Apple Silicon从Docker官网下载Apple Silicon版本安装后在Preferences → General中启用Use Rosetta for x86/amd64 emulation在Features in development中启用Use Virtualization framework注意Docker默认会为每个容器创建独立的虚拟网络接口这可能导致网络延迟。建议在Preferences → Resources → Advanced中适当调整内存和CPU分配。2. 获取与配置RuoYi-Cloud项目2.1 克隆项目仓库git clone https://gitee.com/y_project/RuoYi-Cloud.git cd RuoYi-Cloud2.2 项目结构概览RuoYi-Cloud采用典型微服务架构主要包含以下模块模块名称功能描述是否必需ruoyi-gatewayAPI网关是ruoyi-auth认证中心是ruoyi-system系统模块是ruoyi-monitor监控中心可选ruoyi-gen代码生成可选ruoyi-job定时任务可选ruoyi-file文件服务可选3. Docker镜像配置与优化3.1 ARM兼容镜像选择在Apple Silicon上运行Docker容器时最大的挑战是找到兼容arm64架构的镜像。以下是经过验证可用的镜像版本# docker-compose.yml 关键配置 services: mysql: image: arm64v8/mysql:8.0.32 platform: linux/arm64/v8 environment: MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: ry-cloud MYSQL_USER: ruoyi MYSQL_PASSWORD: ruoyi123 ports: - 3306:3306 volumes: - mysql_data:/var/lib/mysql redis: image: arm64v8/redis:6.2.10 platform: linux/arm64/v8 ports: - 6379:6379 volumes: - redis_data:/data nacos: image: nacos/nacos-server:v2.2.0-slim platform: linux/arm64/v8 ports: - 8848:8848 environment: MODE: standalone SPRING_DATASOURCE_PLATFORM: mysql MYSQL_SERVICE_HOST: mysql MYSQL_SERVICE_DB_NAME: ry-cloud MYSQL_SERVICE_USER: ruoyi MYSQL_SERVICE_PASSWORD: ruoyi123 depends_on: - mysql volumes: mysql_data: redis_data:3.2 常见镜像问题解决方案问题1no matching manifest for linux/arm64/v8 in the manifest list entries解决方案在Docker Hub搜索时添加arm64或aarch64筛选条件使用官方支持的ARM架构镜像如arm64v8/mysql而非library/mysql问题2容器启动后立即退出解决方案检查日志docker logs container_id确保设置了必要的环境变量验证volume挂载路径是否正确4. 服务启动与配置4.1 启动基础设施服务# 在项目根目录执行 docker-compose up -d mysql redis nacos验证服务状态docker ps # 应看到三个容器正常运行4.2 Nacos配置调整访问Nacos控制台http://localhost:8848/nacos (默认账号/密码nacos/nacos)修改ruoyi-system-dev.yml中的数据库连接信息检查ruoyi-gateway-dev.yml中的路由配置提示在M1芯片上Nacos初始启动可能需要较长时间2-3分钟这是正常现象。4.3 后端服务启动顺序建议按以下顺序启动各微服务模块RuoYiGatewayApplication网关模块RuoYiAuthApplication认证模块RuoYiSystemApplication系统模块其他可选模块经验分享在IDEA中可以创建Compound运行配置一次性启动多个服务避免手动逐个启动。5. 前端项目配置与启动5.1 解决Node.js兼容性问题由于M1芯片和较新Node.js版本的特性可能会遇到OpenSSL相关错误cd ruoyi-ui # 设置环境变量解决OpenSSL3.0兼容性问题 export NODE_OPTIONS--openssl-legacy-provider npm install npm run dev5.2 前端访问配置成功启动后可以通过以下地址访问前端页面http://localhost:1024Nacos控制台http://localhost:8848/nacosSwagger文档http://localhost:8080/swagger-ui.html6. 性能优化与调试技巧6.1 Docker资源分配在~/.docker/config.json中添加以下配置可优化性能{ credsStore: osxkeychain, experimental: enabled, features: { buildkit: true }, builder: { gc: { enabled: true, defaultKeepStorage: 20GB } } }6.2 常见问题排查问题服务启动后无法连接数据库排查步骤验证数据库容器是否正常运行docker exec -it ruoyi-mysql mysql -uruoyi -pruoyi123检查Nacos配置中的数据库连接信息查看网关日志docker logs ruoyi-gateway问题前端页面加载缓慢解决方案检查Node.js版本建议v16.x清理npm缓存npm cache clean --force尝试禁用某些浏览器扩展在实际部署过程中我发现最耗时的部分通常是解决ARM架构下的镜像兼容性问题。通过使用专门为arm64架构构建的镜像并合理配置docker-compose文件可以显著提高部署成功率。
http://www.rkmt.cn/news/1388141.html

相关文章:

  • 山东亚克力板材打印新趋势:从加工到品牌赋能
  • 九九八十一难之狡兔三窟,网络共享文件如何用http访问
  • 保姆级教程:用ESP32-CAM和Python OpenCV搭建一个简易家庭监控(RTSP协议,含完整代码)
  • SIM800C模块调试避坑全记录:从USB-TTL到STM32F407,这些坑我都替你踩了
  • 从APB到AHB:手把手教你用Verilog搭建一个简易的AMBA总线验证环境
  • AI智能体工具泛滥的治理:从臃肿到精悍的设计优化实践
  • Unity UGUI Mask真机失效原因与Stencil Buffer修复指南
  • Unity不拉伸进度条:RawImage+Mask解耦方案
  • C#显示错误行号的三种方式
  • 人格测试网站,你也能做!
  • 土耳其物联网设备出海如何稳定联网?Metrix Aero Core土耳其物联网卡适配解析
  • 2026年黄石市本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 大熊猫898989
  • AI 名词搞不清楚?用一条主线搞清 Prompt、RAG、MCP、Agent 到底在解决什么
  • ARMv8-A虚拟化扩展:TCR2_EL2寄存器详解与应用
  • AI智能体记忆系统架构:从向量数据库到长期记忆的工程实践
  • Adobe Acrobat Pro 2025下载安装教程(附安装包)Acrobat Pro 2025 超详细下载安装教程
  • 从GraphCast误差解码海洋影响:机器学习天气预测模型的海气相互作用诊断新范式
  • 软件测试找工作太难?这7个“苟住法则”,帮你硬闯面试关
  • 2026年滁州市正规上门黄金白银回收品牌门店名录 K金+铂金+金条+银条回收门店联系方式推荐+指南 - 盛世金银回收
  • 更新补发第6天:7天学会C语言,每天5分钟,不需要基础
  • 【PolarCTF】审计
  • 使用高斯混合模型对鸢尾花数据集进行聚类分析
  • Unity实时屏幕目标检测与交互框架:YOLOv12工程化实践
  • 【仅限前500名领取】Midjourney光效渲染黄金参数包(含32组实测Prompt+Lighting Tag权重矩阵+SDXL交叉验证数据集)
  • 需求拆了又拆,版本发了又鸽,你到底被卡在哪一环?
  • Azure Blob Storage企业级数据生命周期管理实战
  • 别再写‘素颜’小程序了!这5个CSS技巧让你的界面瞬间高级(附代码)
  • 2026年保山市本地上门黄金回收门店指南 彩金+铂金+金条+白银回收门店联系方式推荐 - 大熊猫898989
  • 2026年大同市正规上门黄金白银回收品牌门店名录 K金+铂金+金条+银条回收门店联系方式推荐+指南 - 盛世金银回收
  • RAG接入不是终点:企业AI助手答不准,断点通常在这几层