19.1 权衡各种部署方案

19.1 权衡各种部署方案

我们可以以多种方式构建和运行Spring Boot应用。在附录中将介绍其中的一部分,包括:

  • 使用Spring Tool Suite或IntelliJ IDEA在IDE中运行应用;
  • 在命令行中通过Maven spring-boot:run goal或Gradle bootRun任务运行应用;
  • 使用Maven或Gradle生成一个可执行的JAR文件,既可以在命令行运行,也可以部署到云中;
  • 使用Maven或Gradle生成一个WAR文件,以部署到传统的Java应用服务器中。

这些可选方案都非常适合在开发阶段运行应用。但是,如果我们想要将应用部署到生产环境或者其他非开发环境,又该怎么办呢?

通过IDE或者Maven、Gradle运行应用并不适用于生产环境,可执行的JAR文件或者传统的WAR文件才是将应用部署到生产环境的可行方案。既然可以部署为WAR文件或JAR文件,那我们该选择哪种呢?通常,这种选择取决于要将应用部署到传统的Java应用服务器中还是部署到云中。

  • 部署到Java应用服务器中:如果必须要将应用部署到Tomcat、WebSphere、WebLogic或其他传统的Java应用服务器中,其实我们别无选择,只能将应用构建为WAR文件。
  • 部署到云中:如果你计划将应用部署到云中,不管是Cloud Foundry、Amazon Web Services(AWS)、Azure、Google Cloud Platform还是其他云平台,那么可执行的JAR文件是最佳选择。即便云平台支持WAR部署,JAR文件格式也要比WAR格式简单得多,WAR文件是专门针对应用服务器部署设计的。

在本章中,我们将会关注3种部署场景。

  • 将Spring Boot应用以WAR文件的形式部署到Java应用服务器中,比如Tomcat。
  • 将Spring Boot应用作为可执行的JAR文件,推送到Cloud Foundry中。
  • 将Spring Boot应用打包到Docker容器中,将其部署到任何支持Docker形式的平台中。

首先,我们看一下如何将配料服务应用构建为一个WAR文件,这样它就可以部署到像Tomcat这样的应用服务器中了。