将 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,如下所示:您可以使用 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的主要内容,如果未能解决你的问题,请参考以下文章