docker项目实战——ruoyi持久化
一、持久化Docker 容器默认是临时存储容器删除容器内部所有数据全部跟着消失。持久化就是把重要数据放到宿主机磁盘脱离容器生命周期。二、持久化部署2.1 mysql 持久化#项目版本下载 cd /opt git clone https://gitee.com/humajun/ruoyi.git # 挂载 mysql 实现持久化 # 创建 MySQL 数据卷 docker volume create mysql-data # 查看数据卷详细信息 docker volume inspect mysql-data # 运行MySQL并挂载数据卷 docker run -d \ --name mysql.server \ --hostname db \ --network ruoyi-net \ -e MYSQL_ROOT_PASSWORD123456 \ -e MYSQL_DATABASEry-vue \ -e LANGC.UTF-8 \ -e LC_ALLC.UTF-8 \ -v /opt/mysql-data:/var/lib/mysql \ -v /opt/ruoyi/sql:/docker-entrypoint-initdb.d \ mysql:5.7 \ --character-set-serverutf8mb4 \ --collation-serverutf8mb4_general_ci # 查看容器是否创建成功 docker ps # 验证卷挂载 docker inspect mysql.server | grep -A 10 Mounts # 进入 mysql.server 容器查看数据库 docker exec -it mysql.server /bin/bash mysql -uroot -p123456 show databases; use ry-vue; show tables;2.2 redis 持久化# 挂载 redis 实现持久化 # 创建Redis数据卷 docker volume create redis-data # 运行Redis并挂载数据卷 docker run -d \ --name redis.server \ --network ruoyi-net \ -p 6379:6379 \ -v redis-data:/data \ redis redis-server --appendonly yes # 查看 redis.server 容器是否运行成功 docker ps2.3 日志挂载# 创建本地目录 mkdir -p /home/developer/ruoyi-logs # 运行容器并挂载本地目录 docker run -d \ --name ruoyi-web \ --network ruoyi-net \ -p 80:80 \ -v /home/developer/ruoyi-logs:/var/log/nginx \ nginx:1.25.3 # 查看容器是否运行成功 docker ps # 访问Nginx生成日志 curl http://localhost # 查看日志文件 cat /home/developer/ruoyi-logs/access.log2.3 ruoyi 后端部署2.3.1 准备jar包# 修改application文件 vim /opt/ruoyi/ruoyi-admin/src/main/resources/application-druid.yml # 修改主机IP和数据库的用户名与密码 vim /opt/ruoyi/ruoyi-admin/src/main/resources/application.yml # 修改主机IP #下载一个mvn镜像用于为我们的后端打jar包 docker pull maven:3.6.3-openjdk-11 # 查看镜像是否下载成功 docker images # 启动maven镜像 cd /opt/ruoyi docker run -it --rm -v /opt/ruoyi:/vue maven:3.6.3-openjdk-11 /bin/bash # 进入/vue目录进行mvn命令打jar包 cd /vue mvn package # 退出maven容器将ruoyi-admin.jar移到/java下 mkdir /opt/java mv /opt/ruoyi/ruoyi-admin/target/ruoyi-admin.jar /opt/java # 将阿里云仓库也上传到 /java 目录下2.3.2 编写Dockerfile定义运行环境# 编写 Dockerfile vim Dockerfile # 使用 OpenJDK 8 镜像 FROM eclipse-temurin:8-jre # 设置时区 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo Asia/Shanghai /etc/timezone # 设置容器内的工作目录为 /opt WORKDIR /opt # 把当前目录下的 ruoyi-admin.jar 拷贝到容器的 /opt 目录 COPY ./ruoyi-admin.jar /opt # 容器启动时执行的命令 CMD [ java,-jar,ruoyi-admin.jar ]2.3.3 构建镜像# 构建命令 docker build -t ruoyi-admin:1.0 . # 查看构建的镜像 docker images | grep ruoyi-admin2.3.4 验证镜像# 运行容器测试 docker run -d \ --name java.server \ --network ruoyi-net \ -p 8080:8080 \ -e SPRING_DATASOURCE_URLjdbc:mysql://mysql.server:3306/ry-vue \ ruoyi-admin:1.0 # 查看启动日志 docker logs java.server2.4 ruoyi 前端部署# 构建产物 cd /opt/ruoyi docker run -it --rm \ -v /opt/ruoyi/ruoyi-ui:/opt \ -w /opt \ node:12 \ /bin/bash -c npm install npm run build:prod # 确认产物 ll /opt/ruoyi/ruoyi-ui/dist/ # 启动Nginx前端 docker run -d \ --name ruoyi-web \ --network ruoyi-net \ -p 8888:80 \ -v /opt/ruoyi/ruoyi-ui/dist:/usr/share/nginx/html \ -v /opt/ruoyi/nginx.conf:/etc/nginx/conf.d/default.conf \ nginx:1.25.3 # 验证 docker ps | grep ruoyi-web2.5 验证# 查看所有容器 docker ps # 验证容器间通信 docker exec java.server getent hosts mysql.server docker exec java.server getent hosts redis.server # 浏览器访问前端 http://服务器IP:8888 http://192.168.1.17:8888

相关新闻

从论文到实战:用逻辑回归分析招聘广告措辞对申请意愿的影响

从论文到实战:用逻辑回归分析招聘广告措辞对申请意愿的影响

最近看到一个论文标题,叫“Gender differences in response to requirements in job adverts”,还特意标了[pdf]。单看标题,这像是一篇社会心理学或劳动经济学的研究。但如果你站在数据分析师或经常做增长实验的人的角度再看一眼,…

2026/10/27 6:48:17 阅读更多 →
网络安全实战:从CTF赛题解析到渗透测试技能提升

网络安全实战:从CTF赛题解析到渗透测试技能提升

1. 赛题背景与核心价值:从“解题”到“实战”的思维跃迁如果你是一名网络安全专业的学生,或者刚刚踏入这个领域的新人,那么“中职组网络安全国赛”这个名字对你来说,可能既熟悉又遥远。熟悉在于,它是国内职业教育体系内…

2026/10/21 9:26:43 阅读更多 →
BLE+UWB组合式追踪器实战:从RSSI到飞行时间测距的完整复盘

BLE+UWB组合式追踪器实战:从RSSI到飞行时间测距的完整复盘

接触者追踪器这东西,很多人以为就是个蓝牙小牌子,靠信号强度估算距离就完事了。但真做过一个Demo之后你会明白,蓝牙RSSI在真实场景里能把人坑到怀疑人生——隔一堵墙的-60dBm和面对面半米的-55dBm,光看数值根本分不出来。后来我把…

2026/10/21 10:13:08 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/26 4:52:12 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 12:00:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/25 13:21:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →