【问题标题】:Deploying Spring Boot in Production在生产中部署 Spring Boot
【发布时间】:2018-10-26 06:13:15
【问题描述】:

我们有一个 Spring Boot + Angular 应用程序。目前我们正在将其打包为 jar 并运行它。

可以将包装用作 JAR 吗? 或者我们应该转向 WAR 类型的包装。 会有什么不同?

【问题讨论】:

  • 功能上没有区别。区别在于服务器的选择。如果您的 Spring Boot 应用程序附带的嵌入式服务器对您来说足够好,那么您就可以开始了。
  • 看看这里:你可以告诉 spring-boot 创建一个可自我执行和部署的 war 文件。因此,如果需要,您可以将部署从嵌入式服务器更改为托管/提供的服务器环境:stackoverflow.com/questions/40289437/…

标签: spring spring-boot tomcat


【解决方案1】:

除了部署风格之外没有别的区别。

使用 JAR 时,spring boot 创建的 fat JAR 包含嵌入式 tomcat。

如果您团队的部署环境具有 WebLogic 或 Websphere 等应用程序服务器,而大多数企业环境由于这些或任何其他此类原因已获得许可,因此会尝试选择该服务器,则您需要创建 WAR。

对于战争:

优点:

  • 创建战争是一种更安全的选择,因为您仍然可以根据需要部署在任何类型的应用程序或 Web 服务器中
  • 如果 DevOps 已经为其他已设置应用程序服务器的团队设置了设置,则允许轻松挂钩以控制服务器的启动和停止。

缺点:

  • 如果要部署在应用程序/Web 服务器中,则需要额外的配置和设置

【讨论】:

    【解决方案2】:

    可以告诉 Spring Boot 生成 WAR 文件,在这种情况下,您可能会选择将其部署到 Web 容器,例如 Tomcat 或 Jetty。

    还可以告诉 Spring Boot 生成一个 JAR,其中包含所有模块/服务的依赖项,并且可以使用 java -jar 运行。

    【讨论】:

    • 选择其中一个有什么优势吗?
    • 取决于您的部署。如果您计划将您的应用程序部署到现有的 Java EE 应用程序服务器(例如 Tomcat),那么标准方法是执行一个 war build。当您使用 fat jar 方法时,您的应用程序将部署在 spring boo 提供的嵌入式应用程序容器上@Swastik
    【解决方案3】:

    简单的方法: 您可以转到您的 application.yml 文件并提及所有环境配置文件详细信息,如下所示:

    弹簧: 配置文件:默认

    弹簧: 个人资料:开发人员

    弹簧: 个人资料:质量检查

    弹簧: 个人资料:产品

    在 application.properties 文件之后只需提及活动配置文件,如下所示

    spring.profiles.active=QA 或 Dev 或 prod

    【讨论】:

    • 这与切换配置文件无关。问题是部署为 JAR 还是 WAR。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2017-09-30
    • 2016-01-14
    • 2018-09-23
    相关资源
    最近更新 更多