微服务时代必备:SpringBoot+Docker+K8s云原生部署实战

🎓博主介绍:Java、Python、js全栈开发 “多面手”,精通多种编程语言和技术,痴迷于人工智能领域。秉持着对技术的热爱与执着,持续探索创新,愿在此分享交流和学习,与大家共进步。
📖DeepSeek-行业融合之万象视界(附实战案例详解100+)
📖全栈开发环境搭建运行攻略:多语言一站式指南(环境搭建+运行+调试+发布+保姆级详解)
👉感兴趣的可以先收藏起来,希望帮助更多的人
在这里插入图片描述

微服务时代必备:SpringBoot+Docker+K8s云原生部署实战

一、引言

在微服务时代,云原生技术已经成为企业构建和部署应用的主流选择。Spring Boot 作为一款轻量级的 Java 开发框架,能够快速搭建独立的、生产级别的 Spring 应用。Docker 则为应用提供了容器化的解决方案,使得应用可以在不同的环境中保持一致的运行状态。而 Kubernetes(K8s)作为容器编排的事实标准,能够自动化地管理和调度容器化应用。本文将详细介绍如何使用 Spring Boot、Docker 和 K8s 进行云原生部署的实战操作。

二、Spring Boot 基础项目搭建

2.1 项目初始化

使用 Spring Initializr(https://start.spring.io/)来快速初始化一个 Spring Boot 项目。选择以下配置:

  • Project: Maven Project
  • Language: Java
  • Spring Boot: 3.0.x(根据实际情况选择)
  • Group: com.example
  • Artifact: spring-boot-docker-k8s-demo
  • Dependencies: Spring Web

点击 “Generate” 按钮下载项目压缩包,解压后导入到 IDE(如 IntelliJ IDEA 或 Eclipse)中。

2.2 编写简单的 RESTful 接口

src/main/java/com/example/springbootdockerk8sdemo 目录下创建 HelloController.java 文件,代码如下:

package com.example.springbootdockerk8sdemo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot + Docker + K8s!";
    }
}

2.3 运行 Spring Boot 项目

在 IDE 中运行 SpringBootDockerK8sDemoApplication.java 类的 main 方法,或者在项目根目录下使用以下命令运行:

mvn spring-boot:run

打开浏览器访问 http://localhost:8080/hello,如果看到 “Hello, Spring Boot + Docker + K8s!” 则说明项目运行成功。

三、使用 Docker 容器化 Spring Boot 应用

3.1 安装 Docker

根据不同的操作系统,从 Docker 官方网站(https://www.docker.com/get-started)下载并安装 Docker。安装完成后,在终端中运行 docker --version 命令,确认 Docker 安装成功。

3.2 创建 Dockerfile

在项目根目录下创建 Dockerfile 文件,内容如下:

# 使用官方的 OpenJDK 17 基础镜像
FROM openjdk:17-jdk-slim

# 设置工作目录
WORKDIR /app

# 将打包好的 JAR 文件复制到容器中
COPY target/spring-boot-docker-k8s-demo-0.0.1-SNAPSHOT.jar app.jar

# 暴露容器的 8080 端口
EXPOSE 8080

# 定义容器启动时执行的命令
CMD ["java", "-jar", "app.jar"]

3.3 构建 Docker 镜像

在项目根目录下使用以下命令打包 Spring Boot 项目:

mvn clean package

然后使用以下命令构建 Docker 镜像:

docker build -t spring-boot-docker-k8s-demo:1.0.0 .

其中,spring-boot-docker-k8s-demo:1.0.0 是镜像的名称和标签,. 表示使用当前目录下的 Dockerfile 进行构建。

3.4 运行 Docker 容器

使用以下命令运行 Docker 容器:

docker run -p 8080:8080 spring-boot-docker-k8s-demo:1.0.0

其中,-p 8080:8080 表示将容器的 8080 端口映射到主机的 8080 端口。打开浏览器访问 http://localhost:8080/hello,如果看到相同的输出,则说明 Docker 容器运行成功。

四、使用 Kubernetes 部署 Spring Boot 应用

4.1 安装 Kubernetes 环境

可以使用 Minikube 来在本地搭建一个单节点的 Kubernetes 集群。从 Minikube 官方网站(https://minikube.sigs.k8s.io/docs/start/)下载并安装 Minikube,然后使用以下命令启动 Minikube:

minikube start

4.2 创建 Deployment 和 Service

在项目根目录下创建 deployment.yaml 文件,内容如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: spring-boot-docker-k8s-demo-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: spring-boot-docker-k8s-demo
  template:
    metadata:
      labels:
        app: spring-boot-docker-k8s-demo
    spec:
      containers:
      - name: spring-boot-docker-k8s-demo-container
        image: spring-boot-docker-k8s-demo:1.0.0
        ports:
        - containerPort: 8080

上述配置文件定义了一个名为 spring-boot-docker-k8s-demo-deployment 的 Deployment,它会创建 3 个副本的 Pod,每个 Pod 中运行一个 spring-boot-docker-k8s-demo-container 容器。

接着创建 service.yaml 文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: spring-boot-docker-k8s-demo-service
spec:
  selector:
    app: spring-boot-docker-k8s-demo
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

上述配置文件定义了一个名为 spring-boot-docker-k8s-demo-service 的 Service,它会将外部流量转发到 spring-boot-docker-k8s-demo 应用的 Pod 上。

4.3 部署到 Kubernetes 集群

使用以下命令将 Deployment 和 Service 部署到 Kubernetes 集群中:

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

4.4 访问应用

使用以下命令查看 Service 的外部 IP 地址:

minikube service spring-boot-docker-k8s-demo-service --url

打开浏览器访问该 URL 加上 /hello 路径,如 http://<external-ip>/hello,如果看到相同的输出,则说明应用已经成功部署到 Kubernetes 集群中。

五、总结

通过本文的实战操作,我们学习了如何使用 Spring Boot 快速搭建一个 Java 应用,如何使用 Docker 将应用容器化,以及如何使用 Kubernetes 对容器化应用进行自动化部署和管理。这些技术的结合使得我们能够更加高效地开发、部署和运维微服务应用,适应微服务时代的发展需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fanxbl957

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值