评论

收藏

[Linux] 基于函数计算自定义运行时快速部署一个 springboot 项目

服务系统 服务系统 发布于:2022-09-02 14:58 | 阅读数:468 | 评论:0

### 什么是函数计算?
函数计算是事件驱动的全托管计算服务。使用函数计算,您无需采购与管理服务器等基础设施,只需编写并上传代码。函数计算为您准备好计算资源,弹性地可靠地运行任务,并提供日志查询、性能监控和报警等功能,借助函数计算,您可以快速构建任何类型的应用和服务,并且只需为任务实际消耗的资源付费。
### 开发步骤
#### 1.开通函数计算
开通前需要您已注册阿里云账号并完成实名认证,进入函数计算官网函数计算[https://fcnext.console.aliyun.com](https://fcnext.console.aliyun.com/)如果您还未开通函数计算,需在函数计算开通页面勾选呢函数计算服务协议之后点击立即开通,开通完成后会自动跳转至函数计算控制台。
![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650272248640-053f6e19-03b5-452e-8763-c35a9f73ccdb.png#crop=0&crop=0&crop=1&crop=1&height=779&id=w0Nkx&originHeight=1558&originWidth=2878&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1439)
#### 2.新建服务
在函数计算控制台点击 "服务及函数" 进入服务列表,在服务列表点击创建服务,填写服务的配置,点击确认即可创建服务,注:开启日志和链路追踪功能可以更方便的进行代码调试、故障分析、数据分析和查看函数内部时间的消耗等(推荐开启,但可能会收取部分费用)。![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650273981206-dad43111-652d-426e-9af3-04883fcd338f.png#crop=0&crop=0&crop=1&crop=1&height=788&id=bXvTr&originHeight=1576&originWidth=2878&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1439)
#### 3.新建函数
在服务列表下点击创建的服务名称进入函数管理页面,点击创建函数,在创建函数页面选择 "使用自定义运行时创建" 填写函数的相关配置,在运行环境中选择Java 17的示例模版函数,配置完成后页面下拉至底部点击创建即可部署一个springboot项目。
![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650275187054-a995d336-023d-4755-941c-51c6902b8028.png#crop=0&crop=0&crop=1&crop=1&height=512&id=nxaw8&originHeight=1024&originWidth=2876&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1438)
![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650275638687-eca67176-75ae-49cb-9ba1-6b1afc7b8eaf.png#crop=0&crop=0&crop=1&crop=1&height=788&id=BsfYf&originHeight=1576&originWidth=2876&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1438)
#### 4.自定义域名配置
函数创建完成后直接在浏览器中直接打开请求地址,将会以附件的方式下载响应。这是因为 Http 触发器会自动在响应头中添加 Content-Disposition: attachment 字段,我们可以使用自定义域名避免该问题,进入域名管理页面点击添加自定义域名,在路由配置中选择自己创建的服务和函数,配置完成后,就可以在浏览器中输入配置的域名,可以看到页面显示的Hello World!内容,到此一个简单的springboot项目就部署配置完成了。![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650277088673-a087d8a1-e744-4840-9c1c-645f1cffca74.png#crop=0&crop=0&crop=1&crop=1&height=756&id=SseIi&originHeight=1512&originWidth=2878&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1439)![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650277426772-8023058e-634e-42c1-b0cf-9738feebee3d.png#crop=0&crop=0&crop=1&crop=1&height=403&id=J548s&originHeight=806&originWidth=2878&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1439)
![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650277369417-0445c874-7b74-48af-812a-710230fddc33.png#crop=0&crop=0&crop=1&crop=1&height=775&id=mwNc6&originHeight=1550&originWidth=2870&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1435)![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650277573929-baed89af-6041-4193-9709-3e07123298b0.png#crop=0&crop=0&crop=1&crop=1&height=485&id=NbTMA&originHeight=970&originWidth=2878&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1439)
#### 5.开发
- 导出代码
继续进行项目开发,我们可以在函数计算控制台进入到该函数的详情页面在函数代码页使用在线IED进行开发和调试,也可以在"导出函数"这里导出函数的代码,使用自己的代码编辑器进行开发。
![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650355731172-062c9cbc-fb39-4ad4-9a34-ac17d7d10093.png#crop=0&crop=0&crop=1&crop=1&height=781&id=xqv4E&originHeight=1562&originWidth=2876&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1438)
- 代码结构
![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650356076132-7aec2f58-13ea-41bb-8244-a79dbd3b2d88.png#crop=0&crop=0&crop=1&crop=1&height=752&id=Hy563&originHeight=1504&originWidth=848&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=424)
- pom.xml
```java

4.0.0
org.springframework.boot
spring-boot-starter-parent
2.6.6
 
com.example
demo
0.0.1-SNAPSHOT
demo
Demo project for Spring Boot
17

org.springframework.boot
spring-boot-starter-web

org.springframework.boot
spring-boot-starter-test
test



org.springframework.boot
spring-boot-maven-plugin



```
- DemoApplication
```java
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配置文件中添加监听端口,这里的配置端口需要和函数配置的监听端口保持一致
![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650356524346-57eb0a76-065e-4c08-a700-5f13329182bd.png#crop=0&crop=0&crop=1&crop=1&height=503&id=Br9SV&originHeight=1006&originWidth=2204&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1102)![](https://intranetproxy.alipay.com/skylark/lark/0/2022/png/279190/1650357399774-f40e4ea9-7c29-4986-b0ac-632b65331f23.png#crop=0&crop=0&crop=1&crop=1&height=365&id=Uq89T&originHeight=730&originWidth=2876&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=1438)
## 总结
本次体验使用函数计算部署一个springboot项目,总体来说过程很流畅,只需要在控制台点点就可以生成并部署好一个项目,对于新手来说非常的友好,省去一大堆传统部署项目时的环境搭建,安装依赖等等,可以真正的让我们做到只关心业务逻辑的开发!
更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。