RuoYi后端jar镜像制作

环境准备

复制代码
1.先下载java17和maven3.9.9
docker run -it --rm -v /opt/ruoyi/RuoYi-Vue:/vue maven:3.9.9-eclipse-temurin-17 /bin/bash -c "cd /vue && mvn clean package -DskipTests"
查看 jar 包
ls -lh /root/RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar

制作 Docker 镜像

第一步:准备 Dockerfile 文件

复制代码
# 1. 创建目录
mkdir -p /opt/ruoyi/java

# 2. 复制 jar 包
cp /root/RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar /opt/ruoyi/java/

# 3. 进入目录
cd /opt/ruoyi/java

# 4. 创建 Dockerfile
cat > Dockerfile << 'EOF'
FROM openjdk:8u342
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
WORKDIR /opt
COPY ruoyi-admin.jar /opt/app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]
EOF

第二步:构建 Docker 镜像

复制代码
cd /opt/ruoyi/java
docker build -t ruoyi-admin:1.0 .

第三步:验证镜像

复制代码
docker images | grep ruoyi-admin

启动 RuoYi 后端服务

第一步:确认 MySQL 和 Redis 已运行

复制代码
# 查看 MySQL 和 Redis 状态
docker ps | grep -E "mysql|redis"

# 如果 MySQL 未运行
docker start mysql.server

# 如果 Redis 未运行
docker start redis.server

如果容器不存在,需要先创建。您之前已经创建过,应该可以直接启动。

第二步:启动后端容器

复制代码
docker run -d \
  --name ruoyi-admin \
  --network ruoyi-net \
  -p 8080:8080 \
  -e SPRING_DATASOURCE_URL="jdbc:mysql://mysql.server:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=Asia/Shanghai" \
  -e SPRING_DATASOURCE_USERNAME=root \
  -e SPRING_DATASOURCE_PASSWORD=123456 \
  -e SPRING_REDIS_HOST=redis.server \
  -e SPRING_REDIS_PORT=6379 \
  ruoyi-admin:1.0

第三步:查看启动日志

复制代码
docker logs -f ruoyi-admin

启动大约需要 10-20 秒,看到类似以下内容表示成功:

复制代码
Started RuoYiApplication in X.XXX seconds (JVM running for X.XXX)

第四步:验证服务

复制代码
# 检查容器状态
docker ps | grep ruoyi-admin

# 测试接口
curl http://localhost:8080

# 测试 Swagger 文档(如果启用)
curl http://localhost:8080/doc.html

前端搭建

复制代码
docker pull node:12

① 进入ruoyi-vue目录
cd /opt/ruoyi/RuoYi-Vue

② 启动node镜像
docker run -itd --rm -v /opt/ruoyi/RuoYi-Vue/ruoyi-ui:/opt node:12 
/bin/bash

③ 进入到此容器/opt目录下并打包前端代码
cd /opt 
npm install  (安装)

输入http://192.168.10.110/index

相关推荐
朝朝辞暮i几秒前
C++ 第 25 课:getter / setter + this
java·javascript·c++
蜗牛互联网8 分钟前
Python接入Gemini 3.8 Flash实现票据视觉抽取与规则校验
java·javascript·网络·人工智能·python
用户0942485680316 分钟前
第22章:JIT编译分层——Interpreter、C1、C2与热点探测
java·jvm
周杰偷奶茶20 分钟前
【JavaSE】类和对象基础
java·开发语言
ly768930 分钟前
Redis 主从复制全解析:从 PSYNC 协议到复制积压缓冲区的故障切换边界
java·数据库·redis·主从复制·故障切换·psync
Alice-YUE44 分钟前
提示词工程:工业级 Prompt 写法与分层组装
java·开发语言·大模型·prompt·提示词工程·system prompt
泡茶喝茶写代码1 小时前
A股量化数据工程:从 REST 接口到策略信号(第 4 篇):行业与概念板块树构建
java·python·股票数据api·股票数据·股票数据api接口·股票api数据接口·股票量化数据api
弹简特1 小时前
【Java项目-企悦抽】17-抽奖模块02-抽奖接口实现
java·开发语言·状态模式·springboot
吴声子夜歌1 小时前
Nginx应用与运维——Nginx编译及部署(部署)
java·运维·nginx
乌暮1 小时前
JVM 原理与实践:从运行时数据区到线上故障排查
java·开发语言·jvm·后端·学习·面试