网络日志

使用函数计算自定义运行时快速部署一个 SpringBoot 项目 | 文末有礼

什么是函数计算

Cloud Native

阿里云函数计算 FC 是事件驱动的全托管计算服务。 使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。 函数计算为您准备好计算资源,弹性地可靠地运行任务,并提供日志查询、性能监控和报警等功能,借助函数计算,您可以快速构建任何类型的应用和服务,并且只需为任务实际消耗的资源付费。

开发步骤

Cloud Native

开通函数计算

开通前需要您已注册阿里云账号并完成实名认证,进入函数计算官网函数计算:

https://fcnext.console.aliyun...

如果您还未开通函数计算,需在函数计算开通页面勾选函数计算服务协议之后点击 “立即开通”,开通完成后会自动跳转至函数计算控制台。

新建服务

在函数计算控制台点击 “服务及函数” 进入服务列表,在服务列表点击创建服务,填写服务的配置,点击 “确认” 即可创建服务。

(注:开启日志和链路追踪功能可以更方便的进行代码调试、故障分析、数据分析和查看函数内部时间的消耗等;推荐开启,但可能会收取部分费用)。

新建函数

在服务列表下点击创建的服务名称进入函数管理页面,点击 “创建函数”,在创建函数页面选择 “使用自定义运行时创建” 填写函数的相关配置,在运行环境中选择 Java 17 的示例模版函数。

配置完成后页面下拉至底部点击 “创建” 即可部署一个 springboot 项目。

自定义域名配置

函数创建完成后直接在浏览器中直接打开请求地址,将会以附件的方式下载响应。

这是因为 Http 触发器会自动在响应头中添加 Content-Disposition: attachment 字段,我们可以使用自定义域名避免该问题。

进入域名管理页面点击添加自定义域名,在路由配置中选择自己创建的服务和函数,配置完成后,就可以在浏览器中输入配置的域名,可以看到页面显示的 Hello World! 内容。

到此一个简单的 springboot 项目就部署配置完成了。

开发

Cloud Native

导出代码

继续进行项目开发,我们可以在函数计算控制台,进入到该函数的详情页面,在函数代码页使用在线 IDE 进行开发和调试,也可以在 “导出函数” 这里导出函数的代码,使用自己的代码编辑器进行开发。

代码结构

pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.6</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

DemoApplication:

package com.example.demo;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;


@SpringBootApplication
@RestController
public class DemoApplication {


    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }


    @GetMapping("/")
    public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
        return String.format("Hello %s!", name);
    }


}

配置监听端口

在 application.properties 配置文件中添加监听端口,这里的配置端口需要和函数配置的监听端口 保持一致:

总结

Cloud Native

本次体验,使 用函数计算部署了一个 springboot 项目,总体来说过程很流畅,只需要在控制台点点就可以生成并部署好一个项目,对于新手来说非常的友好,省去一大堆传统部署项目时的环境搭建,安装依赖等等,可以真正的让我们做到只关心业务逻辑的开发!

欢迎关注我的公众号:敲代码的老贾,回复“领取”赠送《Java面试》资料,阿里,腾讯,字节,美团,饿了么等大厂