将 Spring Boot 应用程序部署到 AWS Beanstalk

Posted

技术标签:

【中文标题】将 Spring Boot 应用程序部署到 AWS Beanstalk【英文标题】:Deploy Spring Boot app to AWS Beanstalk 【发布时间】:2014-05-03 23:32:57 【问题描述】:

将 Spring Boot 项目(最好是 jar)部署到 AWS Beanstalk 环境的最佳方式是什么。还是我应该将其转换为 WAR 并以这种方式部署?


解决方案:

基本上我做的是这样的:

    创建了一个新类来告诉 Spring Boot 我的应用是一个 Web 应用,并且我需要创建所有必要的配置:

    public class MyBootWebApp extends SpringBootServletInitializer  
    
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)  return
    

    application.sources(MyBootApp.class);

(2) .pom 文件内将包装更改为 war,如下所示:<packaging>war</packaging>

就是这样。

【问题讨论】:

【参考方案1】:

将 Spring Boot 部署到 Beanstalk 的最简单方法是使用 Spring Guide 将您的项目转换为 WAR 文件。然后,您只需将 Beanstalk 应用程序设置为使用 Tomcat 并拖放 WAR 文件。 AWS 负责其余的工作。

编辑:基于 Maksim 所做的事情

第 1 步:

public class MyBootWebApp extends SpringBootServletInitializer 
    @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) 
        return application.sources(MyBootApp.class);
    

第 2 步:更改 pom.xml 使用 <packaging>war</packaging>

【讨论】:

基本上我所做的是:(1)创建新类:public class MyBootWebApp extends SpringBootServletInitializer @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) return application.sources(MyBootApp.class); (2) 在 .pom 文件中将包装更改为 war,如下所示:war 就是这样。 这不是真的,看我下面的评论***.com/a/41563745/157591 @PeterSzanto 请记住,这是近 3 年前在 Spring Boot 和 Beanstalk 的早期编写的。现在可能可以将其部署为 jar。【参考方案2】:

您可以使用 Elastic Beanstalk 轻松地将 Spring Boot 应用程序部署为 jar 文件。你甚至不需要官方 Spring Boot 指南中描述的 boxfuse。就这么简单

下载 EB CLI,然后在你的 spring boot 项目文件夹中运行

eb init

对于平台选择选项 2) java

添加到新创建的 .elasticbeanstalk/config.yml 文件中

deploy:
     artifact: target/spring-boot-aws-example-0.0.1-SNAPSHOT.jar

(将 jar 名称更改为匹配的名称)

然后将您的应用程序更改为侦听端口 5000,方法是将其添加到您的 application.properties

server.port=5000

然后做

# Prerequisite : generate deployment artifact
mvn clean install

# Create a load balancing, auto-scaling environment
eb create

我的博客文章中介绍了该过程的全部细节: https://exampledriven.wordpress.com/2017/01/09/spring-boot-aws-elastic-beanstalk-example/

【讨论】:

【参考方案3】:

我对 Beanstalk 的了解并不多,无法确定,但在我看来,Java 容器只支持 WAR。您仍然可以使 WAR 可执行以供本地(和非 Beanstalk)使用(例如,在 gs guide 中)。

【讨论】:

嗨 @Dave Syer,aws 和 Elastic beanstalk 也支持 Jar,请参阅我的以下评论和我的博客文章。【参考方案4】:

将 Spring Boot 项目部署到 AWS Beanstalk,最好在 jar 文件中:

    从 maven pom.xml 将包装更改为“jar” 从 AWS Beanstalk --> 创建一个新的应用程序 在应用程序内部 --> 创建一个新环境 从 Selecting Environment Tier 中选择 --> Web Server Environment 在 web 配置之后 --> 从“平台”必须选择“Java”(在这种情况下不是 Tomcat,因为将提供一个已经包含嵌入式 tomcat 的 jar 文件,AWS Beanstalk 为我们提供了托管服务器在哪里建立了 Linux 操作系统、JVM 和兼容的应用程序,以运行支持我们的应用程序所需的任何东西。如果我们要部署 war 文件,那么必须选择 tomcat) Java 平台还支持部署 'jar' 文件(尽管写成 .zip/.war)

【讨论】:

以上是关于将 Spring Boot 应用程序部署到 AWS Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章