当前位置: 首页 > news >正文

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

安装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.hskmm.com/?act=detail&tid=30963

相关文章:

  • C# 泛型懒汉单例类
  • uni-app x使用uview-plus
  • MyEMS 支撑公共建筑低碳运营:多维度能耗建模逻辑与运行优化策略
  • 实时检测机器人广告点击的深度学习技术
  • MATLAB频散曲线绘制与相速度群速度分析
  • 密码算法的应用
  • 开源生态视角下 MyEMS 的能源管理系统国产化实践:架构设计与自主可控路径
  • 【IEEE出版】第七届机器学习、大数据与商务智能国际会议(MLBDBI 2025)
  • 2025 年国内优质货代公司最新推荐排行榜:深度解析头部企业服务能力,助力企业精准选合作伙伴泰国货代/印尼货代/马来货代/日本货代/东南亚货代公司推荐
  • 2025年鸡精生产设备厂家最新推荐排行榜,高效节能,智能控制,品质卓越的鸡精生产线公司推荐!
  • boofuzz学习
  • 2025年扑灭司林厂家最新推荐排行榜,高效环保扑灭司林,专业生产与优质服务口碑之选!
  • IvorySQL 亮相第 27 届中国国际软件博览会:开源创新,共筑软件新生态
  • uniapp 内嵌传值和接收
  • 鸿蒙项目实战(十一):事件通知EventBus
  • BLE动态修改广播地址
  • 2025年扑灭司林厂家最新推荐排行榜,高效环保扑灭司林,专业生产与市场口碑深度解析!
  • 国标GB28181算法算力平台EasyGBS在食品安全监管系统中的融合与应用方案
  • springcloud和dubbo有什么区别
  • 九种常见UML图(分类+图解)
  • Kruskal 重构树
  • 解决Win11 24H2 缺少Microsoft Print to PDF组件,重新添加出现0x800f0922错误的问题
  • “顾客需求必响应”!国标GB28181算法算力平台EasyGBS国标协议报警预案怎么弄?4步实操指南来了
  • 机器视觉双雄YOLO 和 OpenCV 到底有啥区别?别再傻傻分不清!
  • 基于定制开发开源AI智能名片S2B2C商城小应用的文案信息传达策略研究
  • AI工具学习02 - 使用 ChatGPT 进行 PRD 产品设计
  • mysql默认事务隔离级别,从入门到精通的完全指南
  • 11111111111
  • 利用 OpenTelemetry 集成 JMX 监控
  • Java 23种设计模式的详细解析