Spring Boot的应用打包与部署详解!

举报
bug菌 发表于 2025/04/27 09:58:14 2025/04/27
【摘要】 🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

前言

在这篇文章中,我们将探讨Spring Boot的应用打包与部署。随着现代应用开发的普及,如何高效地打包和部署应用成为了至关重要的一步。我们将展示如何将Spring Boot应用打包为JarWar文件,如何将应用部署到外部服务器云平台(如DockerKubernetes),以及如何使用Spring Boot Actuator进行应用监控,确保应用的高可用性和健康状态。


🌱 一、将Spring Boot应用打包为Jar或War文件

Spring Boot允许你将应用打包为JarWar文件。Jar(Java ARchive)是一种常见的打包格式,适用于独立运行的Spring Boot应用。War(Web ARchive)文件是用于Web应用部署的格式,适合部署到传统的应用服务器中。

1.1 打包为Jar文件

Spring Boot默认使用Jar格式进行打包。Jar文件包含了所有应用的代码、配置和依赖,可以通过一个简单的命令运行。

1.1.1 使用Maven打包为Jar

如果你使用Maven构建项目,确保在pom.xml文件中有如下配置:

<packaging>jar</packaging>

然后,在命令行中执行以下命令:

mvn clean package

执行完后,Spring Boot会生成一个包含所有依赖的可执行Jar文件,默认位于target目录下,文件名为<artifactId>-<version>.jar

你可以通过以下命令来运行打包后的Jar文件:

java -jar target/your-application.jar

1.1.2 打包为可执行Jar

Spring Boot的spring-boot-maven-plugin可以将应用打包成一个可执行的Jar文件,确保应用的所有依赖都被包含在内。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

然后运行mvn clean package命令,生成可执行Jar。

1.2 打包为War文件

对于需要在传统Servlet容器(如Tomcat、Jetty等)中运行的应用,你可以选择将Spring Boot应用打包为War文件。与Jar不同,War文件需要外部服务器来运行,而Jar文件包含了内嵌的服务器。

1.2.1 配置Spring Boot为War

要将Spring Boot应用打包为War文件,你需要做如下修改:

  1. pom.xml中将packagingjar更改为war
<packaging>war</packaging>
  1. 确保SpringBootServletInitializer类继承自SpringBootServletInitializer,这是用于部署到外部Tomcat等服务器的关键。
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.boot.builder.SpringApplicationBuilder;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}
  1. 通过mvn clean package命令打包应用为War文件。

  2. 部署到外部Tomcat、Jetty或其他Servlet容器。

1.2.2 运行War文件

部署War文件时,需要将其部署到外部服务器。不同的Web容器会有不同的部署方式。例如,将War文件放入Tomcat的webapps目录中并启动Tomcat。


🌍 二、部署到外部服务器或云平台

2.1 部署到Docker

Docker是一个开源平台,用于开发、传输和运行应用程序。通过将应用打包到Docker容器中,可以确保应用在任何地方的一致性执行。使用Docker部署Spring Boot应用非常简单。

2.1.1 创建Dockerfile

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

# 使用官方的OpenJDK镜像
FROM openjdk:11-jdk

# 将本地的Jar包复制到容器中
COPY target/your-application.jar /app.jar

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

2.1.2 构建Docker镜像

Dockerfile所在的目录中执行以下命令来构建Docker镜像:

docker build -t your-application .

2.1.3 运行Docker容器

构建完镜像后,使用以下命令运行Docker容器:

docker run -d -p 8080:8080 your-application

这将在后台运行容器,并将容器的8080端口映射到主机的8080端口。通过访问http://localhost:8080,你可以访问应用。

2.2 部署到Kubernetes

Kubernetes是一个开源的容器编排平台,它允许你自动化部署、扩展和管理容器化应用。要将Spring Boot应用部署到Kubernetes,首先需要创建Docker镜像,然后创建Kubernetes部署文件。

2.2.1 创建Kubernetes Deployment文件

创建一个deployment.yaml文件,描述如何在Kubernetes中部署Spring Boot应用:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: spring-boot-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: spring-boot-app
  template:
    metadata:
      labels:
        app: spring-boot-app
    spec:
      containers:
      - name: spring-boot-app
        image: your-application:latest
        ports:
        - containerPort: 8080

2.2.2 部署到Kubernetes

使用kubectl命令将应用部署到Kubernetes集群中:

kubectl apply -f deployment.yaml

然后,可以创建一个服务来暴露应用:

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

部署服务:

kubectl apply -f service.yaml

通过kubectl get services查看暴露的服务地址,你可以通过该地址访问应用。


📊 三、使用Spring Boot Actuator进行应用监控

Spring Boot Actuator是一个强大的工具,它提供了很多监控功能,可以帮助你在生产环境中管理和监控应用。Spring Boot Actuator提供了许多内置的端点,用于查看应用的健康状态、指标、日志等。

3.1 添加Spring Boot Actuator依赖

首先,你需要在pom.xml中添加Spring Boot Actuator的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

3.2 配置Actuator端点

Spring Boot Actuator默认启用了多个监控端点,包括健康检查、应用信息、日志等。你可以通过application.properties来配置Actuator的端点。

management.endpoints.web.exposure.include=health,info,metrics

这个配置会暴露健康检查、应用信息和指标端点。

3.3 健康检查

通过/actuator/health端点,你可以查看应用的健康状态:

GET /actuator/health

返回结果通常会类似于:

{
  "status": "UP"
}

3.4 获取应用信息

/actuator/info端点提供有关应用的信息,比如版本、构建时间等:

GET /actuator/info

返回内容类似于:

{
  "app": {
    "version": "1.0.0",
    "name": "spring-boot-app"
  }
}

3.5 查看应用的指标

你可以使用/actuator/metrics端点查看应用的性能指标:

GET /actuator/metrics

🎉 四、总结

在本文中,我们详细介绍了Spring Boot应用的打包与部署

  1. 将Spring Boot应用打包为Jar或War文件:使用Maven来打包应用,可以选择将应用打包为Jar或War文件,分别适用于独立运行或传统Servlet容器部署。
  2. 部署到Docker和Kubernetes:将Spring Boot应用容器化,部署到Docker和Kubernetes中,实现应用的高效部署和扩展。
  3. 使用Spring Boot Actuator进行应用监控:通过Spring Boot Actuator提供的健康检查、指标、日志等功能来监控和管理应用的状态。

希望这些内容能够帮助你更加高效地打包、部署和监控Spring Boot应用,确保你的应用在生产环境中的稳定性和可维护性!🚀

🧧福利赠与你🧧

  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」专栏(全网一个名),bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。

  最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

  同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

✨️ Who am I?

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主/价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。