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

🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8
前言
在这篇文章中,我们将探讨Spring Boot的应用打包与部署。随着现代应用开发的普及,如何高效地打包和部署应用成为了至关重要的一步。我们将展示如何将Spring Boot应用打包为Jar或War文件,如何将应用部署到外部服务器或云平台(如Docker和Kubernetes),以及如何使用Spring Boot Actuator进行应用监控,确保应用的高可用性和健康状态。
🌱 一、将Spring Boot应用打包为Jar或War文件
Spring Boot允许你将应用打包为Jar或War文件。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文件,你需要做如下修改:
- 在
pom.xml
中将packaging
从jar
更改为war
:
<packaging>war</packaging>
- 确保
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);
}
}
-
通过
mvn clean package
命令打包应用为War文件。 -
部署到外部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应用的打包与部署:
- 将Spring Boot应用打包为Jar或War文件:使用Maven来打包应用,可以选择将应用打包为Jar或War文件,分别适用于独立运行或传统Servlet容器部署。
- 部署到Docker和Kubernetes:将Spring Boot应用容器化,部署到Docker和Kubernetes中,实现应用的高效部署和扩展。
- 使用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-
- 点赞
- 收藏
- 关注作者
评论(0)