Java Kubernetes本地部署RuoYi框架jar包

在本地 Kubernetes 集群中部署 RuoYi 框架的 JAR 包是一个很好的实践,可以帮助你更好地理解和掌握 Kubernetes 的应用部署流程。以下是详细的步骤,指导你在本地 Kubernetes 集群中部署 RuoYi 框架的 JAR 包。

1. 准备环境

1.1 安装 Minikube 或 kind

首先,确保你已经安装了 Minikube 或 kind 来本地运行 Kubernetes 集群。这里以 Minikube 为例进行说明。

  1. 安装 kubectl
bash 复制代码
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
  1. 安装 Minikube
bash 复制代码
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube
sudo mv minikube /usr/local/bin/
  1. 启动 Minikube
ini 复制代码
minikube start --driver=docker

2. 准备 RuoYi 框架的 JAR 包

2.1 构建 RuoYi 框架的 JAR 包

假设你已经有一个 RuoYi 框架的项目,需要构建 JAR 包。

  1. 构建 JAR 包
bash 复制代码
cd /path/to/ruoyi-project
mvn clean package -DskipTests
  1. 找到生成的 JAR 包 : 构建完成后,JAR 包通常位于 ​target​ 目录下,例如 ​ruoyi.jar​

3. 创建 Docker 镜像

3.1 编写 Dockerfile

在 RuoYi 项目的根目录下创建一个 ​​Dockerfile​​ 文件,内容如下:

bash 复制代码
# 使用官方的 OpenJDK 镜像作为基础镜像
FROM openjdk:8-jdk-alpine

# 设置工作目录
WORKDIR /app

# 将 JAR 包复制到容器中
COPY target/ruoyi.jar /app/

# 暴露应用的端口
EXPOSE 8080

# 启动应用
ENTRYPOINT ["java", "-jar", "ruoyi.jar"]

3.2 构建 Docker 镜像

在项目根目录下运行以下命令来构建 Docker 镜像:

erlang 复制代码
docker build -t ruoyi:latest .

4. 部署到 Kubernetes

4.1 创建 Kubernetes 配置文件

4.1.1 创建 Deployment 配置文件

创建一个 ​​ruoyi-deployment.yaml​​ 文件,内容如下:

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ruoyi
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ruoyi
  template:
    metadata:
      labels:
        app: ruoyi
    spec:
      containers:
      - name: ruoyi
        image: ruoyi:latest
        ports:
        - containerPort: 8080
        env:
        - name: SPRING_DATASOURCE_URL
          value: "jdbc:mysql://<mysql-service-name>:3306/ruoyi?useUnicode=true&characterEncoding=utf8&useSSL=false"
        - name: SPRING_DATASOURCE_USERNAME
          value: "root"
        - name: SPRING_DATASOURCE_PASSWORD
          value: "password"
        - name: SPRING_REDIS_HOST
          value: "<redis-service-name>"
        - name: SPRING_REDIS_PORT
          value: "6379"
        - name: SPRING_REDIS_PASSWORD
          value: "password"
4.1.2 创建 Service 配置文件

创建一个 ​​ruoyi-service.yaml​​ 文件,内容如下:

yaml 复制代码
apiVersion: v1
kind: Service
metadata:
  name: ruoyi
spec:
  selector:
    app: ruoyi
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 8080
  type: NodePort

4.2 部署应用

  1. 应用 Deployment 和 Service

    kubectl apply -f ruoyi-deployment.yaml
    kubectl apply -f ruoyi-service.yaml

  2. 验证部署

arduino 复制代码
kubectl get pods
kubectl get services

5. 访问应用

5.1 获取 NodePort

arduino 复制代码
kubectl get service ruoyi

输出类似于:

scss 复制代码
NAME     TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
ruoyi    NodePort   10.109.155.99   <none>        8080:30001/TCP   2m

5.2 访问应用

使用 ​​minikube ip​​​ 获取 Minikube 的 IP 地址,然后通过 ​​http://<minikube-ip>:30001​​ 访问应用。

6. 配置数据库和 Redis

6.1 部署 MySQL

创建一个 ​​mysql-deployment.yaml​​ 文件,内容如下:

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:5.7
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "password"
        - name: MYSQL_DATABASE
          value: "ruoyi"
        ports:
        - containerPort: 3306
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  selector:
    app: mysql
  ports:
  - protocol: TCP
    port: 3306
    targetPort: 3306

应用配置:

复制代码
kubectl apply -f mysql-deployment.yaml

6.2 部署 Redis

创建一个 ​​redis-deployment.yaml​​ 文件,内容如下:

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis:5.0
        ports:
        - containerPort: 6379
---
apiVersion: v1
kind: Service
metadata:
  name: redis
spec:
  selector:
    app: redis
  ports:
  - protocol: TCP
    port: 6379
    targetPort: 6379

应用配置:

复制代码
kubectl apply -f redis-deployment.yaml

7. 更新 RuoYi 配置

确保 RuoYi 的配置文件中使用的数据库和 Redis 服务名称与 Kubernetes 中的服务名称一致。例如:

yaml 复制代码
spring:
  datasource:
    url: jdbc:mysql://mysql:3306/ruoyi?useUnicode=true&characterEncoding=utf8&useSSL=false
    username: root
    password: password
  redis:
    host: redis
    port: 6379
    password: password

8. 重新部署 RuoYi

重新构建 RuoYi 的 Docker 镜像并重新部署:

arduino 复制代码
docker build -t ruoyi:latest .
kubectl delete deployment ruoyi
kubectl apply -f ruoyi-deployment.yaml
kubectl apply -f ruoyi-service.yaml

总结

通过以上步骤,你可以在本地 Kubernetes 集群中成功部署 RuoYi 框架的 JAR 包。这个过程不仅帮助你理解 Kubernetes 的基本概念和操作,还为你在生产环境中部署复杂应用打下了坚实的基础。

相关推荐
大傻^12 分钟前
Spring AI Alibaba ChatClient实战:流式输出与多轮对话管理
java·人工智能·后端·spring·springai·springaialibaba
小帅学编程14 分钟前
英语学习笔记
java·笔记·学习
学编程就要猛23 分钟前
JavaEE初阶:文件操作和IO
java·java-ee
ba_pi24 分钟前
每天写点什么2026-03-19-Doris三种存储模型
java·数据库·mysql
张张123y25 分钟前
#Transformer架构与微调技术深度解析
深度学习·架构·transformer
程序员老乔27 分钟前
Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(二):Valhalla落地,值类型如何让电商DTO内存占用暴跌
java·spring boot·c#
SuniaWang33 分钟前
《Spring AI + 大模型全栈实战》学习手册系列· 专题二:《Milvus 向量数据库:从零开始搭建 RAG 系统的核心组件》
java·人工智能·分布式·后端·spring·架构·typescript
张小洛36 分钟前
Spring 常用类深度剖析(工具篇 02):ReflectionUtils——优雅操作反射的利器
java·后端·spring·工具类·spring常用类
无忧智库40 分钟前
破局与重构:大型企业级数字化业务运营平台的深度解构与演进之路(WORD)
大数据·架构
C澒1 小时前
微前端容器标准化 —— 公共能力篇:通用请求
前端·架构