This topic describes how to deploy a Spring Boot application to Function Compute. Compared with traditional deployment methods, you can deploy a traditional Spring Boot application to the remote end directly for production with one click. Features such as auto scaling, pay-as-you-go, and maintenance-free are provided.

Background information

Spring Boot was developed by the Pivotal team in 2013 and its first version of the new open-source lightweight framework was released in April 2014. A Spring application is designed based on Spring 4.0. In addition to inheriting excellent features of the Spring Framework, it also simplifies the configuration to further simplify the entire build and development process of Spring applications. In addition, Spring Boot integrates a large number of frameworks to solve problems such as dependency package version conflicts and reference instability.

Step 1: Prepare the environment

You do not need to install Docker but only Funcraft. The easiest way to install Funcraft is to download the executable binary files.

  1. Install Funcraft. For more information, see Install Funcraft.
  2. Run the fun --version command to check whether the installation is successful.
  3. Configure Funcraft. For more information, see Configure Funcraft.

Step 2: Deploy an application

  1. Create a Spring Boot project. For more information, see Spring Quickstart Guide.
  2. Use the following command to enter the sample project you created or an existing project.
    cd <project-name>
  3. Run the following command to run the on-premises application:
    • Runs a project on the MacOS or Linux platform.
      ./mvnw spring-boot:run
    • Run the project on Windows.
      mvnw spring-boot:run
  4. Under the root directory of the project, run the mvn package command for packaging.
    The compiled output is similar to the following example.
    $mvn package
    [INFO] Scanning for projects...
    [INFO] 
    [INFO] ----------------------< com.example:Spring-Boot >-----------------------
    [INFO] Building Spring-Boot 0.0.1-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO] 
    [INFO] --- maven-resources-plugin:3.1.0:resources (default-resources) @ Spring-Boot ---
    ... ... ...
    [INFO] 
    [INFO] Results:
    [INFO] 
    [INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    [INFO] 
    [INFO] 
    [INFO] --- maven-jar-plugin:3.1.2:jar (default-jar) @ Spring-Boot ---
    [INFO] Building jar: /Users/txd123/Desktop/Spring-Boot/target/Spring-Boot-0.0.1-SNAPSHOT.jar
    [INFO] 
    [INFO] --- spring-boot-maven-plugin:2.2.6.RELEASE:repackage (repackage) @ Spring-Boot ---
    [INFO] Replacing main artifact with repackaged archive
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  38.850 s
    [INFO] Finished at: 2020-03-31T15:09:34+08:00
    [INFO] ------------------------------------------------------------------------
  5. Run the fun deploy -y command to deploy the application to Function Compute.

    Funcraft automatically begins to deploy the application.

    $fun deploy -y
    current folder is not a fun project.
    Generating template.yml...
    Generate Fun project successfully!
    ========= Fun will use 'fun deploy' to deploy your application to Function Compute! =========
    using region: cn-qingdao
    using accountId: ***********3743
    using accessKeyId: ***********Ptgk
    using timeout: 60
    
    Collecting your services information, in order to caculate devlopment changes...
    
    Resources Changes(Beta version! Only FC resources changes will be displayed):
    
                   trigger httpTrigger deploy success
           function Spring-Boot deploy success
    service Spring-Boot deploy success
    
    Detect 'DomainName:Auto' of custom domain 'Domain'
    Request a new temporary domain ...
    The assigned temporary domain is 15639196-XXX.test.functioncompute.com,expired at 2020-04-10 15:19:56, limited by 1000 per day.
    Waiting for custom domain Domain to be deployed...
    custom domain Domain deploy success

    After the application is deployed, you can check the logs to find the temporary domain name that Function Compute generated. You can use this temporary domain name to access the deployed application.

    Note The temporary domain name is used only for demonstration and development purposes. It is valid for a limited period of time. To use an application in a production environment, you must bind the application to a domain name that has obtained an Internet Content Provider (ICP) filing from Alibaba Cloud. For more information, see Bind a custom domain name.