欢迎光临
我们一直在努力

若依(RuoYi)项目后端 Docker 部署指南

若依(RuoYi)项目后端 Docker 部署指南

本文详细介绍若依项目后端基于 Docker + Docker Compose 的标准化部署流程,包含镜像构建、服务编排、配置修改等核心步骤,适配若依 Vue 版本后端部署。

前置条件

  • 服务器已安装 Docker 和 Docker Compose(推荐 Docker 20.10+、Compose v2+);
  • 服务器已配置 Maven 3.6+ 环境(或本地打包后上传 Jar 包至服务器);
  • 已克隆若依后端项目代码至服务器(或本地),并确认项目可正常编译;
  • 确保服务器 3306、6379、8080 端口未被占用(若占用可修改配置中的端口映射)。
  • 步骤 1:编写 Dockerfile

    在项目根目录下创建 Dockerfile,用于构建若依后端应用镜像。

    完整 Dockerfile 内容

    # 基础镜像:选择JDK17环境(若依4.X+推荐JDK17,低版本可替换为jdk8,如openjdk:8-jre-slim)
    FROM btgoose/jdk17

    # 设置工作目录(容器内)
    WORKDIR /app

    # 创建若依文件上传目录(对应项目的uploadPath配置,避免容器内目录缺失)
    RUN mkdir -p /ruoyi/uploadPath

    # 声明构建参数:指定Jar包路径(本地Maven打包后的Jar包位置)
    ARG JAR_FILE=target/*.jar

    # 将本地Jar包复制到容器内,并重命名为app.jar(统一命名,方便启动)
    COPY ${JAR_FILE} app.jar

    # 暴露应用端口(对应若依默认端口8080)
    EXPOSE 8080

    # 容器启动命令:运行Jar包(可添加JVM参数,如-Xms512m -Xmx1024m 调整内存)
    ENTRYPOINT ["java", "-jar", "app.jar"]

    关键注意事项

    • 首次构建会生成应用镜像,后续执行 docker-compose 会复用该镜像;
    • 若项目 Jar 包更新(代码修改后重新打包),需先删除旧镜像再重新部署:# 查看若依应用镜像
      docker images | grep ruoyi-app
      # 删除旧镜像(替换为实际镜像ID)
      docker rmi <镜像ID>

    步骤 2:编写 docker-compose.yml

    在项目根目录下创建 docker-compose.yml,用于编排 MySQL、Redis、若依应用三个服务,实现一键部署。

    完整 docker-compose.yml 内容

    version: '3.8'

    services:
    # 1. MySQL数据库服务(若依依赖)
    mysql:
    image: mysql:8.0 # 指定MySQL版本(若依兼容5.7/8.0,推荐8.0)
    container_name: ruoyi–mysql # 容器名称,便于管理
    restart: unless–stopped # 非手动停止时,容器异常退出自动重启
    environment:
    MYSQL_ROOT_PASSWORD: password # MySQL root密码(建议修改为强密码)
    MYSQL_DATABASE: ry–vue # 自动创建若依默认数据库
    TZ: Asia/Shanghai # 时区配置(避免时间偏移)
    command:
    # MySQL字符集、排序规则、时区配置(解决中文乱码、时间问题)
    – ––character–set–server=utf8mb4
    – ––collation–server=utf8mb4_unicode_ci
    – ––default–time–zone=+08:00
    ports:
    – "3306:3306" # 端口映射:宿主机3306 -> 容器3306
    volumes:
    – mysql_data:/var/lib/mysql # 数据卷:持久化MySQL数据
    – ./mysql/conf:/etc/mysql/conf.d # 挂载自定义MySQL配置(可选)
    – ./mysql/init:/docker–entrypoint–initdb.d # 挂载初始化SQL,容器启动时自动执行
    networks:
    – ruoyi–network # 加入自定义网络,实现服务间通信
    healthcheck:
    # 健康检查:确保MySQL启动完成后再启动若依应用
    test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-uroot", "-ppassword"]
    timeout: 20s # 单次检查超时时间
    retries: 10 # 重试次数(失败则认为服务异常)

    # 2. Redis缓存服务(若依依赖)
    redis:
    image: redis:7–alpine # 轻量级Redis镜像(alpine版本体积小)
    container_name: ruoyi–redis
    restart: unless–stopped
    command: redis–server ––appendonly yes ––requirepass "" # 开启持久化,关闭密码(生产环境建议设置密码)
    ports:
    – "6379:6379" # 端口映射:宿主机6379 -> 容器6379
    volumes:
    – redis_data:/data # 数据卷:持久化Redis数据
    networks:
    – ruoyi–network

    # 3. 若依后端应用服务
    ruoyi:
    build: . # 基于当前目录的Dockerfile构建镜像
    container_name: ruoyi–app
    restart: always # 始终重启(包括服务器重启)
    depends_on:
    # 依赖条件:MySQL健康检查通过、Redis启动完成后,再启动若依
    mysql:
    condition: service_healthy
    redis:
    condition: service_started
    ports:
    – "8080:8080" # 端口映射:宿主机8080 -> 容器8080
    networks:
    – ruoyi–network # 加入自定义网络,与MySQL/Redis互通
    volumes:
    – ./ruoyi/uploadPath:/ruoyi/uploadPath # 可选:挂载上传目录到宿主机,持久化上传文件

    # 数据卷定义(持久化数据,容器删除后数据不丢失)
    volumes:
    mysql_data: # MySQL数据卷
    redis_data: # Redis数据卷

    # 自定义网络(隔离若依相关服务,避免与其他容器冲突)
    networks:
    ruoyi-network:
    driver: bridge

    优化说明

    • 补充了 MySQL 健康检查的密码参数(原配置缺失,会导致检查失败);
    • 新增若依上传目录的宿主机挂载(可选),避免容器删除后上传文件丢失;
    • 移除了未使用的 upload_data 数据卷(原配置定义但未使用,避免冗余);
    • 增加了配置注释,便于理解每个参数的作用。

    步骤 3:修改项目配置文件

    调整若依后端 application.yml(或 application-druid.yml)中的数据库、Redis 连接配置,将 localhost 改为容器名称(Docker 网络内可通过容器名访问)。

    核心配置修改

    # 数据源配置
    spring:
    datasource:
    druid:
    master:
    url: jdbc:mysql://mysql:3306/ry–vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: password # 需与docker-compose中MYSQL_ROOT_PASSWORD一致
    # Redis配置
    redis:
    host: redis # 替换localhost为redis(容器名)
    port: 6379
    password: "" # 需与docker-compose中Redis密码一致(此处为空)
    database: 0

    步骤 4:打包项目 Jar 包

    在项目根目录执行 Maven 命令,编译并打包生成 Jar 包:

    # 清理旧编译文件,打包(跳过测试,加快速度)
    mvn clean package -DskipTests

    打包完成后,Jar 包会生成在 target/ 目录下(如 ruoyi-admin.jar)。

    步骤 5:执行 Docker Compose 部署

    在项目根目录执行以下命令,启动所有服务:

    # 构建并启动容器(-d 后台运行)
    docker-compose up -d –build

    # 查看容器运行状态
    docker-compose ps

    # 查看若依应用日志(排查启动异常)
    docker-compose logs -f ruoyi

    步骤 6:验证部署是否成功

  • 访问若依后端接口:http://服务器IP:8080/system/index,返回登录页面则部署成功;
  • 查看容器状态:docker ps,确保 ruoyi-mysql、ruoyi-redis、ruoyi-app 均为 Up 状态;
  • 验证数据持久化:向若依上传文件后,查看服务器 ./ruoyi/uploadPath 目录是否有文件生成。
  • 项目目录结构

    ├── doc/ # 可选:项目文档
    ├── mysql/
    │ ├── conf/ # 可选:MySQL自定义配置文件
    │ └── init/ # MySQL初始化SQL(容器启动时自动执行)
    │ └── ry-vue.sql # 若依初始化脚本
    ├── ruoyi/
    │ └── uploadPath/ # 可选:宿主机挂载的上传目录
    ├── Dockerfile # 若依应用镜像构建文件
    ├── docker-compose.yml # 服务编排文件
    └── target/
    └── ruoyi-admin.jar # Maven打包后的Jar包

    常见注意事项

  • 镜像复用问题:若 Jar 包更新后,需先删除旧的若依应用镜像,否则 docker-compose 会复用旧镜像,导致代码未更新;
  • 端口冲突:若服务器 3306/6379/8080 端口已被占用,需修改 docker-compose.yml 中的端口映射(如 3307:3306);
  • 密码安全:生产环境需修改 MySQL/Redis 密码,避免使用默认密码;
  • JVM 参数优化:可在 Dockerfile 的 ENTRYPOINT 中添加 JVM 参数(如 -Xms512m -Xmx1024m),适配服务器内存;
  • 日志查看:若应用启动失败,通过 docker-compose logs -f ruoyi 查看详细日志,常见问题为数据库连接失败、配置文件错误。
  • 总结

  • 核心流程:编写 Dockerfile → 编写 docker-compose.yml → 修改配置文件 → 打包 Jar 包 → 启动容器;
  • 关键配置:将数据库/Redis 连接地址改为容器名,确保 Docker 网络内服务互通;
  • 数据持久化:通过 Docker 数据卷挂载 MySQL/Redis/上传目录,避免数据丢失;
  • 排障重点:通过日志排查启动异常,重点检查端口、密码、网络配置。
  • 赞(0)
    未经允许不得转载:171主机测评 » 若依(RuoYi)项目后端 Docker 部署指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址