将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>
就是这样。
将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:使用<packaging>war</packaging>
更改pom.xml
您可以使用Elastic Beanstalk轻松地将Spring Boot应用程序部署为jar文件。您甚至不需要官方Spring Boot指南中描述的boxfuse。它和一样简单
下载EB CLI,然后在您的spring-boot项目文件夹中运行
eb init
对于平台,选择选项2(java
将这个添加到新创建的.aelasticbeanstall/config.yml文件中
deploy:
artifact: target/spring-boot-aws-example-0.0.1-SNAPSHOT.jar
(将罐子名称更改为匹配的名称(
然后将应用程序添加到应用程序属性中,将其更改为侦听端口5000
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/
我对Beanstalk的了解还不够,但在我看来,Java容器只支持WAR。您仍然可以使WAR可执行以供本地(和非Beanstalk(使用(例如,如gs指南中所述(。
将Spring Boot项目部署到AWS Beanstalk,最好是在jar文件中:
- 从mavenpom.xml将包装更改为"jar">
- 从AWS Beanstalk-->创建一个新的应用程序
- 在应用程序内部-->创建一个新环境
- 从"选择环境层"中,选择-->Web服务器环境
- 在web配置中-->从"平台"必须选择"Java"(在这种情况下,不是Tomcat,因为将提供一个已经包含嵌入式Tomcat的jar文件,AWS Beanstalk为我们提供了一个托管服务器,在那里建立了Linux操作系统、JVM和兼容的应用程序,以运行支持我们的应用程序所需的一切。如果我们部署了war文件,那么必须选择Tomcat(
- Java平台还支持要部署的"jar"文件(尽管是用.zip/.war编写的(