引言
本文主要讲的是spring boot的五种部署方式,里面是否有你不知道的呢,如果有欢迎评论留言哦,一起交流探讨哦!!!
可以使用各种方法将Spring Boot应用程序部署到生产系统中。在本文中,我们将通过以下5种方法逐步部署Spring Boot应用程序:
- 在Java Archive(JAR)中作为独立应用程序进行部署,
- 将Web应用程序存档(WAR)部署到servlet容器中,
- 在Docker Container中部署,
- 在NGINX Web服务器后面部署 – 直接设置,
- 部署在NGINX Web服务器后面 – 容器化设置。
在Java Archive(JAR)中作为独立应用程序进行部署
Spring Boot应用程序可以轻松打包到JAR文件中,并作为独立应用程序进行部署。这是由spring-boot-maven-plugin完成的。一旦Spring项目通过Spring Initializr创建为Maven项目,插件就会自动添加到pom.xml中。
<build> <plugins> <plugin> <groupId> org.springframework.boot </ groupId> <artifactId> spring-boot-maven-plugin </ artifactId> </ plugin> <<span style="color:transparent">来1源gaodai#ma#com搞*代#码1网</span>/ plugins> </ build>
要将应用程序打包在单个(胖)jar文件中,请mvn package在项目目录下运行maven命令。这将把应用程序打包到一个可执行的jar文件中,该文件包含所有依赖项(包括嵌入式servlet容器 – 如果它是一个Web应用程序)。要运行jar文件,请使用以下标准JVM命令:
java -jar <jar-file-name>.jar
将Web应用程序存档(WAR)部署到servlet容器中
可以将Spring Boot应用程序打包到WAR文件中,以部署到现有的servlet容器(例如Tomcat,Jetty等)中。这可以按如下方式完成:
通过pom.xml文件指定WAR包<packaging>war</packaging>。这会将应用程序打包成WAR文件(而不是JAR)。在第二步,将Tomcat(servlet容器)依赖关系的范围设置为provided(以便它不会部署到WAR文件中):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId <scope>provided</scope> </dependency>
通过扩展SpringBootServletInitializer并覆盖configure方法来初始化Tomcat所需的Servlet上下文,如下所示:
@SpringBootApplication public class DemoApp extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(DemoApp.class); } public static void main(String[] args) { SpringApplication.run(DemoApp.class, args); } }
要将应用程序打包到war文件中,请mvn clean package在项目目录下运行标准maven命令。这将生成可以部署到servlet容器中的WAR包。要在现有Tomcat容器中运行应用程序,请将生成的WAR文件复制到tomcat/webapps/目录。
在Docker Container中部署
在将应用程序部署到Docker容器之前,我们首先将应用程序打包在(胖)JAR文件中。之前已经解释了这个过程,因此我假设我们有一个jar文件。
在第一步,我们需要构建一个容器镜像。为此,我们首先在项目根目录中创建一个Dockerfile,如下所示:
# latest oracle openjdk is the basis FROM openjdk:oracle # copy jar file into container image under app directory COPY target/demoApp.jar app/demoApp.jar # expose server port accept connections EXPOSE 8080 # start application CMD ["java", "-jar", "app/demoApp.jar"]