在CentOS 7.9系统上使用Docker部署RuoYi-Vue前后端分离系统

news/2025/10/14 16:29:12/文章来源:https://www.cnblogs.com/wang-zeyu/p/19141198

安装Docker

# 安装必要工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加阿里云镜像
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 查看Docker版本信息
docker -v
# 启动 docker 服务
sudo systemctl start docker
# 停止 docker 服务
sudo systemctl stop docker
# 查看 docker 服务状态
sudo systemctl status docker
# 重启 docker 服务
sudo systemctl restart docker
# 设置开机自启
sudo systemctl enable docker

安装Docker Compose

# github连接不稳定,可能需要梯子
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 授权
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version

准备项目文件

创建项目文件夹

sudo mkdir -p /opt/ruoyi/{mysql/data,mysql/init,redis/data,backend,frontend}

结构为:

/opt/ruoyi/
├── docker-compose.yml          # Docker Compose主编排文件
├── mysql/
│   ├── data/                   # 数据库数据持久化目录
│   └── init/                   # 初始化SQL脚本目录
├── redis/
│   └── data/                   # Redis数据持久化目录
├── backend/
│   ├── Dockerfile              # 后端镜像构建文件
│   └── ruoyi-admin.jar         # 后端JAR包(需上传)
└── frontend/├── Dockerfile              # 前端镜像构建文件└── dist/                   # 前端静态资源(需上传)

配置MySQL与Redis

将RuoYi项目中的数据库初始化SQL文件(ry_xxxxxx.sql和 quartz.sql)上传到 /opt/ruoyi/mysql/init/目录下。
图片

配置后端服务SpringBoot

将本地打包好的 ruoyi-admin.jar文件上传到服务器的 /opt/ruoyi/backend/目录下。

创建后端的Dockerfile

在 /opt/ruoyi/backend/目录下创建 Dockerfile文件:

# 使用较小的JDK基础镜像,这里以OpenJDK 8为例
FROM openjdk:8-jre-slim# 设定时区
ENV TZ=Asia/Shanghai
# 安装字体库(若依验证码需要)
RUN apt-get update && apt-get install -y --no-install-recommends fontconfig libfreetype6 && rm -rf /var/lib/apt/lists/*# 设置工作目录
WORKDIR /app# 将jar包复制到容器内
COPY ruoyi-admin.jar app.jar# 暴露端口
EXPOSE 8080# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]

配置前端服务Vue

将前端打包生成的 dist文件夹 上传到服务器的 /opt/ruoyi/frontend/目录下。
再把之前准备好的 nginx.conf文件 也上传到 /opt/ruoyi/frontend/目录下。

创建前端的Dockerfile​

在 /opt/ruoyi/frontend/目录下创建 Dockerfile文件:

FROM nginx:1.21-alpine# 将打包好的静态文件复制到Nginx的默认站点目录
COPY dist/ /usr/share/nginx/html/# 复制自定义的Nginx配置文件
COPY nginx.conf /etc/nginx/conf.d/default.conf

编写Docker Compose编排文件

在 /opt/ruoyi/目录下创建 docker-compose.yml文件

version: '3.8'services:ruoyi-mysql:image: mysql:8.0container_name: ruoyi-mysqlcommand: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_passwordenvironment:MYSQL_ROOT_PASSWORD: root@123  # 请修改为强密码MYSQL_DATABASE: ry-vue         # 数据库名,需与RuoYi配置一致ports:- "3306:3306"volumes:- ./mysql/data:/var/lib/mysql           # 数据持久化- ./mysql/init:/docker-entrypoint-initdb.d # 初始化SQLnetworks:- ruoyi-netruoyi-redis:image: redis:6.2-alpinecontainer_name: ruoyi-redisports:- "6379:6379"volumes:- ./redis/data:/datacommand: redis-server --requirepass redis@123  # 请修改为强密码,需与RuoYi配置一致networks:- ruoyi-netruoyi-backend:build: ./backend  # 根据backend目录下的Dockerfile构建镜像container_name: ruoyi-backenddepends_on:       # 明确依赖关系,先启动db和redis- ruoyi-mysql- ruoyi-redisenvironment:TZ: Asia/Shanghainetworks:- ruoyi-net# 不直接映射宿主机端口,通过Nginx反向代理访问,更安全ruoyi-frontend:build: ./frontend # 根据frontend目录下的Dockerfile构建镜像container_name: ruoyi-frontenddepends_on:- ruoyi-backendports:- "80:80"       # 将前端Nginx服务暴露在80端口networks:- ruoyi-netnetworks:ruoyi-net: # 创建自定义网络,便于容器间通过服务名(如ruoyi-backend)通信

⚠注:这里配置的要与后端代码ruoyi-admin/src/main/resources/application.yml和application-druid.yml中的数据库名,账号,密码,端口等保持一致。

redis:host: ruoyi-redisport: 6379password: redis@123  # 与docker-compose.yml中redis的command密码一致
url: jdbc:mysql://ruoyi-mysql:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root@123  # 与docker-compose.yml中的MYSQL_ROOT_PASSWORD一致

构建并启动所有服务

cd /opt/ruoyi
# 构建镜像并启动所有容器(-d 表示后台运行)
docker-compose up -d --build

验证部署与排查

​检查容器状态​:

docker-compose ps

所有服务(mysql, redis, backend, frontend)的状态应为 "Up"。

查看日志​:

docker logs ruoyi-backend    # 查看后端日志
docker logs ruoyi-frontend   # 查看前端Nginx日志
docker logs ruoyi-mysql      # 查看数据库日志

访问

在浏览器中输入 http://你的服务器IP,应能访问到RuoYi-Vue的登录界面。默认用户名是 admin,密码是 admin123

⚠注:确保服务器防火墙已开放80、3306、6379等端口。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/936916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 泛型懒汉单例类

C# 泛型懒汉单例类 using System;namespace SingletonHepler {public sealed class Singleton<T> where T : class, new(){private static readonly Lazy<T> _instance = new Lazy<T>(() => new …

uni-app x使用uview-plus

一、概述‌uView-Plus官网提供完整框架文档与资源下载‌,是兼容多端开发的uni-app生态框架,支持安卓、iOS、微信小程序等10个平台。 uView-Plus官网及框架概述‌官网入口‌:主文档站(uiadmin.net)|GitHub Pages(…

MyEMS 支撑公共建筑低碳运营:多维度能耗建模逻辑与运行优化策略

在"双碳"目标背景下,公共建筑作为能源消耗的重要领域,其低碳化运营已成为刚性需求。然而,公共建筑功能复杂、用能系统繁多、运行工况多变,传统粗放式的能源管理方式难以实现精准降碳。MyEMS 通过构建多维…

实时检测机器人广告点击的深度学习技术

本文介绍SLIDR系统,一种基于深度学习和优化技术的实时机器人广告点击检测方案。该系统能有效识别无效点击,保护广告主免受机器人流量损失,具备实时处理、可扩展性和高精度等特点。实时检测机器人广告点击的深度学习…

详细介绍:【数据结构与算法-Day 36】查找算法入门:从顺序查找的朴素到二分查找的惊艳

详细介绍:【数据结构与算法-Day 36】查找算法入门:从顺序查找的朴素到二分查找的惊艳pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important;…

MATLAB频散曲线绘制与相速度群速度分析

1. 理论基础 频散曲线描述了波在介质中传播时,相速度(Phase Velocity)和群速度(Group Velocity)随频率或频厚积(Frequency-Thickness Product)的变化关系。相速度:单一频率波的相位传播速度,公式为 \(v_p=\fr…

密码算法的应用

摘要算法的应用 Hash函数 杂凑函数 消息认证码 \(tag = MAC(K,M)\) \(V(k,m,tag)=yes\) 通常用带密钥的Hash函数来生成消息认证码 双方通过密钥K来确定用到的Hash函数 可以在不安全的信道中同时传递数据和认证标签 \(H…

开源生态视角下 MyEMS 的能源管理系统国产化实践:架构设计与自主可控路径

一、引言​ 在 “双碳” 目标与能源安全战略双重驱动下,能源管理系统(EMS)作为工业、建筑、园区等场景实现能耗优化、碳排管控的核心工具,其国产化替代已成为产业升级的关键命题。长期以来,我国 EMS 市场高度依赖…

【IEEE出版】第七届机器学习、大数据与商务智能国际会议(MLBDBI 2025)

第七届机器学习、大数据与商务智能国际会议(MLBDBI 2025)将于2025年10月24-26日在中国浙江杭州召开。【IEEE出版,ISBN号:979-8-3315-6624-1】 【已连续6届EI稳定检索 | 延续浙江财经大学主办】 第七届机器学习、大…

2025 年国内优质货代公司最新推荐排行榜:深度解析头部企业服务能力,助力企业精准选合作伙伴泰国货代/印尼货代/马来货代/日本货代/东南亚货代公司推荐

当前全球贸易格局不断变化,国际货运需求持续攀升,但货代市场却呈现出服务质量良莠不齐的态势。许多企业在选择货代合作伙伴时,常面临服务范围不匹配、清关效率低、特殊品类运输能力不足等问题,导致货物延误、成本增…

2025年鸡精生产设备厂家最新推荐排行榜,高效节能,智能控制,品质卓越的鸡精生产线公司推荐!

2025年鸡精生产设备厂家最新推荐排行榜,高效节能,智能控制,品质卓越的鸡精生产线公司推荐!随着食品工业的快速发展,鸡精作为一种重要的调味品,在市场上需求量持续增长。为了满足市场需求,越来越多的企业开始关注…

boofuzz学习

boofuzz学习 常见的命令 创建虚拟环境 python3 -m venv env启动虚拟环境 source env/bin/activate安装 boofuzz pip install boofuzz文档安装 boofuzz — boofuzz 0.4.2 文档学习 让ai写一个简单的测试脚本 from boofu…

2025年扑灭司林厂家最新推荐排行榜,高效环保扑灭司林,专业生产与优质服务口碑之选!

随着环保意识的提升和对产品质量要求的不断提高,扑灭司林作为一种高效的环保产品,越来越受到市场的青睐。为了帮助筛选扑灭司林品牌,特此发布权威推荐榜单,为采购决策提供专业参考价值。一、扑灭司林厂家推荐榜推荐…

IvorySQL 亮相第 27 届中国国际软件博览会:开源创新,共筑软件新生态

2025 年 10 月 15 日至 17 日,第 27 届中国国际软件博览会(简称软博会)将在郑州国际会展中心盛大举办。作为我国软件和信息技术服务领域规模最大、影响力最强的专业盛会,软博会已成功举办 26 届,历来备受国家和社…

uniapp 内嵌传值和接收

在uniapp不同的编译环境传值和接收方式不同,现在展示两种方式APP-h5; h5-h5 html页面<template><view class="cloud-page"><web-view id="myWebview" ref="webview" :sr…

鸿蒙项目实战(十一):事件通知EventBus

第三方库:EventBus 使用方法://注册事件监听 EventBus.on(id, (id: string) => {ToastUtil.showToast(`ID: ${id}`); });//注册单次事件监听 EventBus.once(id, (id: string) => {ToastUtil.showToast(`单次ID…

BLE动态修改广播地址

转载自:https://www.cnblogs.com/gscw/p/18735613 前言:实现动态修改MAC,需要注意关闭广播后调用GAP_ConfigDeviceAddr(ADDRTYPE_PRIVATE_NONRESOLVE, ownAddr)配置完成后再开启广播。void HidEmu_Init() {tmos_sta…

2025年扑灭司林厂家最新推荐排行榜,高效环保扑灭司林,专业生产与市场口碑深度解析!

2025年扑灭司林厂家最新推荐排行榜,高效环保扑灭司林,专业生产与市场口碑深度解析!随着环保意识的不断增强,扑灭司林作为一种高效的环保农药,在农业和林业中得到了广泛应用。为了帮助筛选扑灭司林品牌,特此发布权…

国标GB28181算法算力平台EasyGBS在食品安全监管系统中的融合与应用方案

国标GB28181算法算力平台EasyGBS在食品安全监管系统中的融合与应用方案近年来,食品安全问题日益成为社会关注的焦点。随着科技的发展,视频监控技术在食品安全监管中发挥了重要作用。国标GB28181算法算力平台EasyGBS作…

springcloud和dubbo有什么区别

1) 概览 — 两者在产品定位上的差异Dubbo:阿里巴巴出品的高性能 RPC 框架,强调 高吞吐、低延迟、强治理能力(服务注册、路由、流控、降级),以 Java 为主。适用于对延迟/吞吐有较高要求的内部服务间 RPC 场景(尤其…