加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

猜你不知道Spring Boot的几种部署方式

发布时间:2019-07-24 04:50:36 所属栏目:移动互联 来源:Java架构笔记
导读:引言 本文主要讲的是spring boot的五种部署方式,里面是否有你不知道的呢,如果有欢迎评论留言哦,一起交流探讨哦!!! 可以使用各种方法将Spring Boot应用程序部署到生产系统中。在本文中,我们将通过以下5种方法逐步部署Spring Boot应用程序: 在Java A
副标题[/!--empirenews.page--]

引言

本文主要讲的是spring boot的五种部署方式,里面是否有你不知道的呢,如果有欢迎评论留言哦,一起交流探讨哦!!!

可以使用各种方法将Spring Boot应用程序部署到生产系统中。在本文中,我们将通过以下5种方法逐步部署Spring Boot应用程序:

  1. 在Java Archive(JAR)中作为独立应用程序进行部署,
  2. 将Web应用程序存档(WAR)部署到servlet容器中,
  3. 在Docker Container中部署,
  4. 在NGINX Web服务器后面部署 - 直接设置,
  5. 部署在NGINX Web服务器后面 - 容器化设置。

在Java Archive(JAR)中作为独立应用程序进行部署

Spring Boot应用程序可以轻松打包到JAR文件中,并作为独立应用程序进行部署。这是由spring-boot-maven-plugin完成的。一旦Spring项目通过Spring Initializr创建为Maven项目,插件就会自动添加到pom.xml中。

  1. <build>  
  2.  <plugins>  
  3.  <plugin>  
  4.  <groupId> org.springframework.boot </ groupId>  
  5.  <artifactId> spring-boot-maven-plugin </ artifactId>  
  6.  </ plugin>  
  7.  </ plugins>  
  8. </ build> 

要将应用程序打包在单个(胖)jar文件中,请mvn package在项目目录下运行maven命令。这将把应用程序打包到一个可执行的jar文件中,该文件包含所有依赖项(包括嵌入式servlet容器 - 如果它是一个Web应用程序)。要运行jar文件,请使用以下标准JVM命令:

  1. 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文件中):

  1. <dependency> 
  2.  <groupId>org.springframework.boot</groupId> 
  3.  <artifactId>spring-boot-starter-tomcat</artifactId 
  4.  <scope>provided</scope> 
  5. </dependency> 

通过扩展SpringBootServletInitializer并覆盖configure方法来初始化Tomcat所需的Servlet上下文,如下所示:

  1. @SpringBootApplication 
  2. public class DemoApp extends SpringBootServletInitializer { 
  3.  @Override 
  4.  protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 
  5.  return builder.sources(DemoApp.class); 
  6.  } 
  7.  public static void main(String[] args) { 
  8.  SpringApplication.run(DemoApp.class, args); 
  9.  } 

要将应用程序打包到war文件中,请mvn clean package在项目目录下运行标准maven命令。这将生成可以部署到servlet容器中的WAR包。要在现有Tomcat容器中运行应用程序,请将生成的WAR文件复制到tomcat/webapps/目录。

在Docker Container中部署

在将应用程序部署到Docker容器之前,我们首先将应用程序打包在(胖)JAR文件中。之前已经解释了这个过程,因此我假设我们有一个jar文件。

在第一步,我们需要构建一个容器镜像。为此,我们首先在项目根目录中创建一个Dockerfile,如下所示:

  1. # latest oracle openjdk is the basis 
  2. FROM openjdk:oracle 
  3. # copy jar file into container image under app directory 
  4. COPY target/demoApp.jar app/demoApp.jar 
  5. # expose server port accept connections 
  6. EXPOSE 8080 
  7. # start application 
  8. CMD ["java", "-jar", "app/demoApp.jar"] 

请注意,在上面的代码片段中,我们假设应用程序JAR文件“ demoApp.jar”位于项目的目标目录下。我们还假设嵌入式servlet端口是8080(这是Tomcat的默认情况)。

我们现在可以使用以下命令构建Docker镜像(Dockerfile所在的位置):

  1. docker image build -t demo-app:latest . 

-t是要构建的镜像的名称和标记。构建镜像后,我们可以通过以下方式创建和运行容器:

  1. docker container run -p 8080:8080 -d --name app-container demo-app 

-p是发布(映射)主机端口到容器端口(在这种情况下,两个都是8080)。选项-d(detach)指定在后台运行容器,并用--name指定容器的名称。

部署在NGINX Web服务器后面 - 直接设置

为实际生产配置servlet容器(例如Tomcat或Jetty)(即在端口80上运行,没有root用户和使用SSL)可能不是直接的(但可行)。此,建议在Spring Boot应用程序前使用Web服务器(如Nginx)。这可以通过两种方式完成; 直接设置或Docker设置。在本节中,我们将演示直接设置。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读