news 2026/4/26 5:33:09

ruoyi-cloud微服务基于docker-compose的Linux生产环境部署实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ruoyi-cloud微服务基于docker-compose的Linux生产环境部署实战

1. 环境准备与基础配置

第一次在Linux生产环境部署ruoyi-cloud微服务时,我特意选了台闲置的测试服务器练手。建议选择CentOS 7.6以上版本,实测这个版本对Docker的兼容性最稳定。内存分配是个容易踩坑的点——我最初只给虚拟机分配了2G内存,结果Nacos和MySQL同时启动时直接OOM崩溃。后来发现单个Nacos服务就需要1.5G内存,加上其他组件,4G内存是底线配置。

安装Docker时推荐使用阿里云镜像源,速度能快3-5倍。这里有个细节:很多教程会直接使用官方源,但在国内环境经常卡在下载环节。我常用的配置命令是这样的:

# 安装必要工具 yum install -y yum-utils device-mapper-persistent-data lvm2 # 设置阿里云镜像源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装Docker引擎 yum install -y docker-ce docker-ce-cli containerd.io

安装完成后别急着启动,先配置镜像加速。有次我在没配加速的情况下拉取MySQL镜像,速度只有50KB/s,后来在/etc/docker/daemon.json加入以下配置,速度直接飙升到8MB/s:

{ "registry-mirrors": ["https://mr63yffu.mirror.aliyuncs.com"], "log-driver": "json-file", "log-opts": {"max-size": "100m"} }

注意:修改daemon.json后必须执行systemctl daemon-reloadsystemctl restart docker才能生效

2. 关键组件独立部署

2.1 Nacos配置实战

ruoyi-cloud 2023年后的版本要求Nacos 2.0.4+,这里有个版本兼容性的大坑:如果用错版本会导致服务注册失败。我推荐使用以下命令拉取指定版本镜像:

docker pull nacos/nacos-server:v2.0.4

启动Nacos时需要特别注意端口映射。除了常见的8848端口,9848和9849这两个gRPC端口也必须暴露,否则客户端无法连接:

docker run -d --name nacos \ -p 8848:8848 -p 9848:9848 -p 9849:9849 \ -e MODE=standalone \ -e JVM_XMS=1g -e JVM_XMX=1g \ nacos/nacos-server:v2.0.4

生产环境建议将JVM参数调大,我遇到过默认512M堆内存导致频繁Full GC的情况

2.2 MySQL优化配置

MySQL容器部署时最容易遇到权限问题。我习惯先创建好挂载目录并设置权限:

mkdir -p /data/mysql/{data,logs,conf} chmod -R 755 /data/mysql

启动命令中这几个参数特别关键:

  • --default-authentication-plugin=mysql_native_password解决新版认证问题
  • --character-set-server=utf8mb4支持完整unicode
  • --lower_case_table_names=1避免表名大小写问题

完整启动示例:

docker run -d --name mysql \ -p 3306:3306 \ -v /data/mysql/conf:/etc/mysql/conf.d \ -v /data/mysql/logs:/var/log/mysql \ -v /data/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=your_strong_password \ -e TZ=Asia/Shanghai \ mysql:8.0 \ --default-authentication-plugin=mysql_native_password \ --character-set-server=utf8mb4 \ --lower_case_table_names=1

3. Docker Compose编排艺术

3.1 编写compose文件

ruoyi-cloud的docker-compose.yml需要特别注意服务启动顺序。我优化后的版本增加了健康检查和依赖关系:

version: '3' services: nacos: image: nacos/nacos-server:v2.0.4 ports: - "8848:8848" - "9848:9848" - "9849:9849" environment: - MODE=standalone healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8848/nacos"] interval: 30s timeout: 10s retries: 3 mysql: image: mysql:8.0 ports: - "3306:3306" volumes: - ./mysql/conf:/etc/mysql/conf.d - ./mysql/data:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 20s retries: 10

3.2 网络配置技巧

默认的bridge网络会导致容器间通信问题。我建议创建自定义网络并固定IP段:

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

然后在每个service中添加:

services: nacos: networks: ruoyi-net: ipv4_address: 172.28.1.10

这样其他服务就可以直接用nacos:8848这样的域名访问,避免IP变动导致配置失效。

4. 部署验证与排错

4.1 服务健康检查

部署完成后我习惯用这个检查清单验证:

  1. docker-compose ps查看所有容器状态
  2. curl http://nacos:8848/nacos测试Nacos接口
  3. mysql -h 172.28.1.11 -uroot -p测试MySQL连接
  4. redis-cli -h 172.28.1.12 ping测试Redis响应

4.2 常见问题解决

问题1:Nacos连接MySQL报Public Key Retrieval错误 解决方法:在MySQL连接字符串添加参数:

allowPublicKeyRetrieval=true&useSSL=false

问题2:服务注册到Nacos但显示不健康 检查项:

  • 是否开放了服务自身的健康检查端口
  • Nacos控制台命名空间是否匹配
  • 服务配置的Nacos地址是否为容器内地址

问题3:Docker日志占用磁盘过大 解决方案:在daemon.json中配置日志轮转:

{ "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } }

记得有一次部署时所有服务都正常但前端无法访问,最后发现是Nginx配置里少了这段:

location / { try_files $uri $uri/ /index.html; }

这种细节问题往往最耗时,建议部署前先准备好完整的检查清单。

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

Phi-4-Reasoning-Vision快速上手:支持WebP/HEIC等扩展格式自动转换

Phi-4-Reasoning-Vision快速上手:支持WebP/HEIC等扩展格式自动转换 1. 工具概览 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为双卡RTX 4090环境优化。它不仅支持传统的JPG/PNG图片格式&…

作者头像 李华
网站建设 2026/4/18 19:14:22

GLM-TTS音色管理实测:自定义保存与加载音色,打造专属语音库

GLM-TTS音色管理实测:自定义保存与加载音色,打造专属语音库 1. 引言:为什么需要音色管理功能 在语音合成应用中,我们经常需要反复使用某些特定的音色。传统TTS系统每次生成语音都需要重新上传参考音频,不仅效率低下&…

作者头像 李华
网站建设 2026/4/18 9:08:11

Wan2.2-I2V-A14B效果展示:支持遮挡关系、前后景深度分层的3D感知视频

Wan2.2-I2V-A14B效果展示:支持遮挡关系、前后景深度分层的3D感知视频 1. 惊艳的3D感知视频生成能力 Wan2.2-I2V-A14B模型最令人印象深刻的能力是它能够生成具有真实3D感知效果的视频。不同于传统视频生成模型只能产生平面效果,这个模型可以准确理解场景…

作者头像 李华