云计算百科
云计算领域专业知识百科平台

在CentOS 7服务器使用Docker部署若依(RuoYi)前后端分离项目指南

一、前言

若依(RuoYi)是一款基于SpringBoot+Vue的前后端分离权限管理系统,采用Docker部署可以简化环境配置、提升部署效率。本文将通过详细步骤演示如何在CentOS 7服务器上使用Docker容器化部署若依前后端分离项目。

二、环境准备

1. 服务器配置
  • 操作系统:CentOS 7.6+

  • 内存:建议4GB+

  • 硬盘:20GB+可用空间

  • 开放端口:80、8080、3306、6379

2.安装Docker环境

# 安装依赖
sudo yum install -y yum-utils
# 添加Docker源
sudo yum-config-manager –add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# 安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动并设置开机自启
sudo systemctl enable –now docker

 3. 安装Docker Compose

# 下载Docker Compose
sudo curl -L "https://mirror.aliyun.com/docker-toolbox/linux/compose/2.26.1/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose –version

4. 开放防火墙端口

# 阿里云控制台需额外开放端口:80, 443, 3306, 6379

三、准备项目目录结构 

1. 创建项目根目录

mkdir -p /opt/ruoyi/{mysql,redis,backend,frontend,nginx}
cd /opt/ruoyi

 2. 目录结构说明

/opt/ruoyi
├── docker-compose.yml # 主编排文件
├── mysql
│ ├── data # 数据库持久化数据
│ └── init # 初始化SQL脚本
├── redis
│ └── data # Redis持久化数据
├── backend
│ ├── Dockerfile # 后端镜像构建文件
│ ├── ruoyi-admin.jar # 后端JAR包(需自行放入)
│ └── application.yml # 后端配置文件(需修改)
└── frontend
├── Dockerfile # 前端镜像构建文件
├── dist # 前端编译后的静态文件(需自行放入)
└── nginx.conf # 前端Nginx配置

 三、部署 MySQL 和 Redis
1. 编写 docker-compose.yml

version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: ruoyi-mysql
command:
–character-set-server=utf8mb4
–collation-server=utf8mb4_unicode_ci
–default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: root@123 # 自定义root密码
MYSQL_DATABASE: ry-cloud # 数据库名需与RuoYi配置一致
MYSQL_USER: root
MYSQL_PASSWORD: root@123
# 新增字符集环境变量
MYSQL_CHARACTER_SET_SERVER: utf8mb4
MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci
ports:
– "3306:3306"
volumes:
– ./mysql/data:/var/lib/mysql # 数据持久化
– ./mysql/init:/docker-entrypoint-initdb.d # 初始化SQL
networks:
– ruoyi-net

redis:
image: redis:6.2
container_name: ruoyi-redis
ports:
– "6379:6379"
volumes:
– ./redis/data:/data
command: redis-server –requirepass redis@123 # Redis密码需与RuoYi配置一致
networks:
– ruoyi-net

networks:
ruoyi-net: # 自定义网络,确保容器间通过服务名通信

2. 导入 RuoYi 初始化SQL

# 将 RuoYi 的 SQL 文件(如 ry_2023xxxx.sql 和 quartz.sql)放入目录
cp ry_2023xxxx.sql /opt/ruoyi/mysql/init/
cp quartz.sql /opt/ruoyi/mysql/init/

 四、部署后端服务(Spring Boot)

1. 准备后端文件
  • 将编译好的 ruoyi-admin.jar 放入 /opt/ruoyi/backend

  • 创建 backend/Dockerfile:

  • FROM openjdk:17-jdk-slim
    # 关键:安装字体库(Debian 系命令)
    RUN apt-get update \\
    && apt-get install -y –no-install-recommends \\
    libfreetype6 \\
    fontconfig \\
    && rm -rf /var/lib/apt/lists/*
    WORKDIR /app
    COPY dafu-admin.jar ./app.jar
    EXPOSE 8080
    ENTRYPOINT ["java", "-jar", "app.jar"]

    📊 镜像对比表  
  • 设置字体库作用于若依框架账号-验证码
  • 镜像名称体积内置字体是否需要额外安装特点
    eclipse-temurin:17-jre-jammy 210MB 生产首选
    amazoncorretto:17-al2-full 400MB AWS 环境优化
    azul/zulu-openjdk:17 450MB 多架构支持
    openjdk:17-jdk-slim 300MB 需手动安装依赖
    eclipse-temurin:17-jre-alpine 80MB ✅(少量) 极简但兼容性略低
 2. 修改后端配置

   编辑application.yml/application-druid.yml (需自行从RuoYi项目中复制并修改):

   解决方案:不要使用localhost或者127.0.0.1、mysql

   注意:项目配置文件跟docker-compose.yml 保存一致

# 数据库配置
master:
url: jdbc:mysql://你的服务器IP:3306/ry-cloud? useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
# 注意使用服务名mysql
username: root # MYSQL_USER需与RuoYi配置一致
password: root@123 # MYSQL_ROOT_PASSWORD需与RuoYi配置一致

# Redis配置
redis:
host: redis # 使用服务名redis
port: 6379
password: ruoyi@123 # command: redis-server –requirepass ruoyi@123 # Redis密码需与RuoYi配置一致

3. 将后端添加到 docker-compose.yml

services:
# … (原有mysql和redis配置)

backend:
build: ./backend # 指向Dockerfile所在目录
container_name: ruoyi-backend
depends_on:
– mysql
– redis
networks:
– ruoyi-net
environment:
TZ: Asia/Shanghai # 时区设置

五、部署前端(Vue + Nginx)

 1. 编译前端文件

 在本地开发环境执行:

npm run build:prod # 生成dist目录

将 dist 文件夹上传到服务器的 /opt/ruoyi/frontend 

 2. 编写前端Dockerfile

 创建 frontend/Dockerfile

FROM nginx:1.21
COPY dist/ /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf

3. 配置Nginx反向代理

 创建 frontend/nginx.conf:

server {
listen 80;
server_name localhost;

location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html; # 解决Vue路由History模式404
}

location /prod-api/ { # 前端请求代理到后端
proxy_pass http://backend:8080/; # 使用服务名backend
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

4. 将前端添加到 docker-compose.yml

services:
# … (原有配置)

frontend:
build: ./frontend
container_name: ruoyi-frontend
depends_on:
– backend
ports:
– "80:80" # 暴露前端端口
networks:
– ruoyi-net

六、启动全部服务

Docker 命令终极指南

cd /opt/ruoyi
docker-compose up -d –build # 构建镜像

七、验证部署

1. 检查容器状态

docker-compose ps # 所有容器应为running

2. 查看日志排查问题

docker logs ruoyi-backend # 检查后端启动日志
docker logs ruoyi-frontend # 检查Nginx配置
docker logs ….等

 3. 访问测试
  • 前端页面:http://你的服务器IP

  • 后端接口:http://你的服务器IP/prod-api/xxxx

常见问题 

  1.检查MySQL用户权限

docker exec -it ruoyi-mysql mysql -u root -p

  在MySQL服务器执行:

— 查看用户权限(替换实际用户名)
SELECT host, user FROM mysql.user WHERE user='root';

— 授权远程访问(如果需要)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root@123' WITH GRANT OPTION;
FLUSH PRIVILEGES;

  启动 mysql 容器 

docker restart ruoyi-mysql

赞(0)
未经允许不得转载:网硕互联帮助中心 » 在CentOS 7服务器使用Docker部署若依(RuoYi)前后端分离项目指南
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!