整体流程:

  1. 后端 maven 打 jar 包(不变)
  2. ✅修改:后端 Dockerfile,直接使用 jdk 官方镜像(本部分是改动重点)
  3. 前端 Vue 打包 dist、制作 nginx 镜像(不变)
  4. 创建自定义网络ruoyi‑net(不变)
  5. 启动 mysql、redis 中间件,导入 sql 脚本(不变)
  6. 启动 java 后端、nginx 前端容器(不变)

第一步:后端 Maven 打 jar 包

bash

# 使用maven容器编译源码,服务器不用装maven
docker run -it --rm -v /opt/RuoYi‑Vue:/vue maven:3.6.3‑openjdk‑11 bash
cd /vue
mvn clean package -DskipTests
exit

产物路径:/opt/RuoYi‑Vue/ruoyi‑admin/target/ruoyi‑admin.jar

拷贝 jar 到 docker 构建目录

bash

mkdir -p /opt/RuoYi‑Vue/docker‑java
cp /opt/RuoYi‑Vue/ruoyi‑admin/target/ruoyi‑admin.jar /opt/RuoYi‑Vue/docker‑java/

第二步【重点:Dockerfile,使用官方 jdk 镜像】

原来是FROM centos:7,再 yum 安装 java;现在直接使用自带 JDK 的官方镜像openjdk:8‑jre,镜像内部已经包含 JDK 运行环境,不需要再安装 JDK。

/opt/RuoYi‑Vue/docker‑java/Dockerfile

dockerfile

FROM openjdk:8u342-jdk

ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

WORKDIR /opt

COPY ./ruoyi-admin.jar /opt

EXPOSE 8080

CMD ["java","-jar","ruoyi-admin.jar"]

对比原版 centos 版本差异:

  • ❌ 删除 centos 镜像、yum 源拷贝、yum install java‑1.8.0安装 jdk 步骤;
  • ✅ FROM openjdk:8‑jre基础镜像自带完整 JRE 运行环境;
  • 其余指令ENV/RUN/WORKDIR/COPY/EXPOSE/ENTRYPOINT沿用 。

构建后端镜像

bash

cd /opt/RuoYi‑Vue/docker‑java
docker build -t ruoyi‑admin:1.0 .
docker images | grep ruoyi‑admin

第三步:验证镜像

# 运行容器测试
docker run -d \
--name java.server \
--network ruoyi-net \
-p 8080:8080 \
-e SPRING_DATASOURCE_URL=jdbc:mysql://mysql.server:3306/ry-vue\
ruoyi-admin:1.0
# 查看启动日志
docker logs -f java.server
# 健康检查
curl http://localhost:8080/actuator/health

​​​​​​​

第四步 ruoyi 前端部署

# 拉取 node:12 镜像
docker pull node:12

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

# 启动node镜像
docker run -itd --rm -v /opt/ruoyi/ruoyi‑ui:/opt node:12 /bin/bash

# 进入到此容器/opt目录下并打包前端代码
docker exec -it jovial_herschel(容器的名字) /bin/bash
cd /opt
npm install
npm run build:prod

更多推荐