Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deploy Spring Boot app to AWS Beanstalk

What would be the best way to deploy Spring Boot project, preferable just jar, to AWS Beanstalk environment. Or should I just convert it to WAR and deploy it that way?


Solution:

Basically what I did was this:

  1. Created new class to tell Spring Boot that my app is a web app and that I need to create all necessary configs:

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

    application.sources(MyBootApp.class); } }

(2) inside .pom file changed packaging to war like this: <packaging>war</packaging>

That was it.

like image 777
Maksim Avatar asked Mar 21 '23 02:03

Maksim


2 Answers

Easiest way to deploy Spring Boot to Beanstalk is to use the Spring Guide for converting your project to a WAR file. Then you just setup your Beanstalk application to use Tomcat and drag and drop the WAR file. AWS takes care of the rest.

EDIT: Based on what Maksim did

Step 1:

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

Step 2: Change your pom.xml use <packaging>war</packaging>

like image 200
Erich Avatar answered Mar 23 '23 11:03

Erich


You can easily deploy Spring Boot applications as jar file using Elastic Beanstalk. You don't even need boxfuse as described in the official Spring Boot guide. It is as easy as

Download the EB CLI, then in your spring boot project folder run

eb init

for the platform select option 2) java

add to the newly created .elasticbeanstalk/config.yml file this

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

(change the jar name to a matching one)

then change your application to listen on port 5000 by adding this to your application.properties

server.port=5000

then do

# Prerequisite : generate deployment artifact
mvn clean install

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

The full details of the process are covered in my blog article : https://exampledriven.wordpress.com/2017/01/09/spring-boot-aws-elastic-beanstalk-example/

like image 25
Peter Szanto Avatar answered Mar 23 '23 10:03

Peter Szanto