在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-jammy210MB生产首选
    amazoncorretto:17-al2-full400MBAWS 环境优化
    azul/zulu-openjdk:17450MB多架构支持
    openjdk:17-jdk-slim300MB需手动安装依赖
    eclipse-temurin:17-jre-alpine80MB✅(少量)极简但兼容性略低
 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

### 安装 DockerDocker Compose 在 CentOS 7部署若依前后端分离版本项目,首先需要安装 DockerDocker Compose。可以通过以下命令完成安装: ```bash # 安装 Docker sudo yum install -y docker # 启动 Docker 服务 sudo systemctl start docker # 设置 Docker 服务开机启动 sudo systemctl enable docker # 安装 Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 给予执行权限 sudo chmod +x /usr/local/bin/docker-compose # 验证安装 docker-compose --version ``` ### 准备项目目录和配置文件 创建一个项目目录,例如 `/root/ruoyi`,并在该目录下准备 `docker-compose.yml` 文件。根据提供的配置示例,可以编写如下内容: ```yaml version: '3.8' services: # Redis 服务 ruoyi-redis: image: redis container_name: ruoyi-redis # MySQL 服务 ruoyi-db: image: mysql:8.0 container_name: ruoyi-db command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci environment: MYSQL_ROOT_PASSWORD: lzz2578+ MYSQL_DATABASE: ry-vue volumes: - ./RuoYi-Vue/sql:/docker-entrypoint-initdb.d:ro - ./ruoyi-db:/var/lib/mysql:rw # Java 后端服务 ruoyi-java: build: context: ./java container_name: ruoyi-java ports: - 8080:8080 links: - ruoyi-redis:redis.server - ruoyi-db:mysql.server depends_on: - ruoyi-db - ruoyi-redis # Nginx 服务 ruoyi-nginx: build: context: ./nginx container_name: ruoyi-nginx ports: - 80:80 links: - ruoyi-java:java.host depends_on: - ruoyi-java ``` ### 构建并运行容器 进入项目目录 `/root/ruoyi` 并执行以下命令来构建并运行容器: ```bash cd /root/ruoyi docker-compose up -d ``` 如果想查看执行过程中的错误,可以先将 `-d` 参数去掉: ```bash docker-compose up ``` ### 数据卷管理 为了确保数据持久化,可以通过 `-v` 参数挂载数据卷。例如,Nginx 的 HTML 文件可以挂载到宿主机的目录中: ```bash # 创建数据卷 docker volume create html # 挂载数据卷到 Nginx 容器 docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx ``` 查看数据卷详情: ```bash docker volume inspect html ``` 修改 Nginx 的 HTML 内容: ```bash cd /var/lib/docker/volumes/html/_data vi index.html ``` 进入容器内部查看文件是否变化: ```bash docker exec -it nginx bash ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值