在此博客中,我们将看到如何在Amazon ElasticBeanstalk上部署Spring Boot应用程序。
Amazon ElasticBeanstalk具有一个预配置的Java环境,可用于部署内部装有servlet容器的Spring Boot JAR。
对于我们的示例,此处将使用maven作为构建工具。
步骤1:第一步是将应用程序打包为要部署的JAR。
–在pom中,我们必须确保将“ packaging”属性设置为“ jar”
<groupId>com.anirudh</groupId>
<artifactId>practice</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Practice</name>
–现在,运行maven命令以打包应用程序并生成一个JAR。
Anirudhs-MacBook-Pro:~ anirudh$ mvn clean package
这会将JAR打包到目标文件夹中,如下所示:
practice-1.0-SNAPSHOT
现在,我们需要在ElasticBeanstalk中创建一个环境。
第2步:
登录您的AWS账户并转到Elastic Beanstalk。 创建一个新环境,为您的应用程序命名,选择适当的实例类型。 如果您只是对此进行测试,请确保选择“ t2.micro”实例,因为它位于“免费套餐”下。
创建Java环境后,需要将创建的“ JAR”上载到Elastic Beanstalk,如果使用Web Interface,则可以直接选择文件并上载,否则,如果使用CLI,则可以使用以下命令将其推送到ElasticBeanstalk:它的CLI模块。 上传后,将需要几分钟来部署您的应用程序。
该应用程序现在使用Nginx反向代理,默认情况下会与端口5000通讯,因此现在将不可用。因此,如果您尝试立即运行该应用程序,则会收到502错误。 要解决此问题,您需要定义属性“ PORT”
步骤3:定义“端口”
为了使应用程序正常运行,您需要添加一个名称为“ PORT”的标签,并在大多数情况下设置值,如果使用所有默认值,则应为8080。
步骤4:打开端口8080
现在,我们需要打开端口8080,以输入EC2实例的入站流量。 转到EC2实例并找到用于该实例的安全组。 编辑安全组,添加入站规则,然后添加以下规则:
现在,您的端口8080已打开,可以接受入站连接。 现在,如果您单击应用程序的链接,则应该可以访问您的应用程序,如果不尝试将端口8080添加到URL中(如果您未使用ELB)
可选步骤5:添加数据库
如果您的应用程序正在使用数据库,则将RDS实例添加到ElasticBeanstalk应用程序中并启动它。
记下访问URL,用户名,密码等。
Endpoint: aaxxxxxxj.xxxxxxxmcn.ap-south-1.rds.amazonaws.com:3306
转到application.properties文件,并输入所有这四个参数:(此示例使用MySQL)
spring.datasource.url = jdbc:mysql://aaxxxxxxj.xxxxxxxmcn.ap-south-1.rds.amazonaws.com:3306/practice
spring.datasource.username = xxxxx
spring.datasource.password = xxxxxx
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect
现在,如果您已将“ spring.jpa.hibernate.ddl-auto”设置为创建/更新,请再次打包您的JAR并上传。 只要已经建立了架构,就可以创建数据库表。 您可以使用schema.sql在Spring Boot中创建架构。
希望这有助于将Spring Boot应用程序部署到Amazon Elastic bean stalk。
翻译自: https://www.javacodegeeks.com/2016/08/deploy-spring-boot-application-amazon-elastic-beanstalk.html