Skip to content

Commit

Permalink
Merge pull request #23 from devsapp/new_spec_v2
Browse files Browse the repository at this point in the history
update readme
  • Loading branch information
anycodes authored Mar 2, 2022
2 parents 103133b + 5c480fe commit fa735d0
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 128 deletions.
2 changes: 1 addition & 1 deletion update.list
Original file line number Diff line number Diff line change
@@ -1 +1 @@
example/todolist-app
web-framework/java/springboot
79 changes: 43 additions & 36 deletions web-framework/java/springboot/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Type: Application
Name: start-springboot
Provider:
- 阿里云
Version: 1.1.17
Version: 1.1.18
Description: 快速部署一个Springboot应用到阿里云函数计算
HomePage: https://github.com/devsapp/start-web-framework
Tags:
Expand All @@ -14,38 +14,45 @@ Service:
Authorities:
- 管理员权限
Parameters:
region:
type: string
default: cn-hangzhou
description: 创建应用所在的地区
required: true
enum:
- cn-beijing
- cn-hangzhou
- cn-shanghai
- cn-qingdao
- cn-zhangjiakou
- cn-huhehaote
- cn-shenzhen
- cn-chengdu
- cn-hongkong
- ap-southeast-1
- ap-southeast-2
- ap-southeast-3
- ap-southeast-5
- ap-northeast-1
- eu-central-1
- eu-west-1
- us-west-1
- us-east-1
- ap-south-1
serviceName:
type: string
default: web-framework
description: 应用所属的函数计算服务
required: true
functionName:
type: string
default: springboot
description: 应用的函数名称
required: true
type: object
additionalProperties: false # 不允许增加其他属性
required: # 必填项
- region
- serviceName
- functionName
properties:
region:
title: 地域
type: string
default: cn-hangzhou
description: 创建应用所在的地区
enum:
- cn-beijing
- cn-hangzhou
- cn-shanghai
- cn-qingdao
- cn-zhangjiakou
- cn-huhehaote
- cn-shenzhen
- cn-chengdu
- cn-hongkong
- ap-southeast-1
- ap-southeast-2
- ap-southeast-3
- ap-southeast-5
- ap-northeast-1
- eu-central-1
- eu-west-1
- us-west-1
- us-east-1
- ap-south-1
serviceName:
title: 服务名
type: string
default: web-framework
description: 应用所属的函数计算服务
functionName:
title: 函数名
type: string
default: springboot
description: 应用的函数名称
3 changes: 1 addition & 2 deletions web-framework/java/springboot/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@
## 快速部署和体验
### 在线快速体验

- 通过阿里云 **Serverless 应用中心**: 可以点击 [【🚀 部署】](https://fcnext.console.aliyun.com/applications/create?clone_url=https://github.com/huangfushan/hfs-test-5.git) ,按照引导填入参数,快速进行部署和体验。
- 通过阿里云 **CloudShell**:可以点击 [【🏄 部署】](https://api.aliyun.com/new#/tutorial?action=git_open&git_repo=https://github.com/devsapp/devsapp-cloudshell-example.git&tutorial=tutorial/start-laravel.md) ,按照引导填入参数,快速进行部署和体验。
- 通过阿里云 **Serverless 应用中心**: 可以点击 [【🚀 部署】](https://fcnext.console.aliyun.com/applications/create?template=start-springboot) ,按照引导填入参数,快速进行部署和体验。

### 在本地部署体验

Expand Down
142 changes: 53 additions & 89 deletions web-framework/java/springboot/src/readme.md
Original file line number Diff line number Diff line change
@@ -1,92 +1,56 @@
# 阿里云 Spring Boot 框架案例

- [阿里云 Spring Boot 框架案例](#阿里云-spring-boot-框架案例)
- [快速体验](#快速体验)
- [相关命令](#相关命令)
- [依赖过大部署方案](#依赖过大部署方案)
- [通过Container进行部署](#通过container进行部署)

## 快速体验

- 初始化项目:`s init start-springboot`
- 进入项目后部署:`s deploy`
- 部署过程中可能需要阿里云密钥的支持,部署完成之后会获得到临时域名可供测试

> 权限与Yaml配置可以参考 [FC Yaml 规范文档](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/yaml.md)
## 相关命令

由于该框架直接部署在阿里云函数计算平台,所以可以参考函数计算组件相关的命令:

| 构建&部署 | 可观测性 | 调用&调试 | 发布&配置 | 其他功能 |
| --- | --- | --- |--- | --- |
| [**部署 deploy**](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/deploy.md) | [指标查询 metrics](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/metrics.md) | [**本地调用 local**](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/local.md) | [**版本 version**](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/version.md) | [**硬盘挂载 nas**](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/nas.md) |
| [**构建 build**](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/build.md) | [日志查询 logs](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/logs.md) | [远程调用 invoke](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/invoke.md) | [**别名 alias**](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/alias.md) | [计划变更 plan](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/plan.md) |
| [移除 remove](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/remove.md) | | [**端云联调 proxied**](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/proxied.md) | [预留 provision](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/provision.md) | [查看函数 info](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/info.md) |
| | | [远程调试 remote](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/remote.md) | [按量资源 ondemand](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/ondemand.md) |[**资源同步 sync**](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/sync.md) |
| | | [内存&并发度探测 eval](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/eval.md) | [层 layer](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/layer.md) | [压测 stress](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/stress.md) |
| | | | | [API调用 api](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/api.md) |
| | | | | [Fun项目迁移 fun2s](https://github.com/devsapp/fc/blob/jiangyu-docs/docs/zh/command/fun2s.md) |

## 依赖过大部署方案

函数计算的接口本身默认只支持 100M 的代码包,如果想要部署超过 100M 的代码包,可以考虑:

-`nasConfig` 配置为 `auto`,然后基于 nas 指令将大文件(可能是训练集/依赖包)传输到 NAS 指定位置,然后配置相应的环境变量到 `s.yml` 中的函数配置中;
- 将非 custom-container 的函数转换成 custom-container,这需要对代码进行一定的改造,并新增 dockerfile,然后创建这个函数(此方式冷启动时间相对其他 runtime 会有一点点的延长);

### 通过Container进行部署

1. 在项目下,创建Dockerfile文件,例如:
```dockerfile
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} webframework.jar
ENTRYPOINT ["java","-jar","/webframework.jar"]
```
2. 编写资源描述文件(`s.yaml`):
```yaml
edition: 1.0.0 # 命令行YAML规范版本,遵循语义化版本(Semantic Versioning)规范
name: springboot # 项目名称
access: "{{ access }}"

services:
springboot:
component: devsapp/fc
actions:
pre-deploy: # 在deploy之前运行
- run: mvn package # 要运行的命令行
path: ./code # 命令行运行的路径
- run: s build --use-docker
path: ./code
props:
region: cn-beijing
service:
name: webframework
description: This is a FC service for springboot
function:
name: springboot
codeUri: ./code
runtime: custom-container
caPort: 9000
customContainerConfig:
image: registry.cn-beijing.aliyuncs.com/custom-container/web-framework:0.0.1 # 需要替换为自己的镜像地址,或者自己目标的镜像地址,需要开通阿里云容器镜像服务等
memorySize: 1024
timeout: 30
triggers:
- name: httpTrigger
type: http
config:
authType: anonymous
methods:
- GET
customDomains:
- domainName: auto
protocol: HTTP
routeConfigs:
- path: /*
```
3. 进行项目的一键部署:`s deploy --use-local -y`,此时系统就可以自动安装依赖、构建镜像,并将业务以Container形式部署到线上
# Springboot 框架

> 快速部署和体验Serverless架构下的Springboot项目
- [Springboot 框架](#springboot-框架)
- [体验前准备](#体验前准备)
- [代码与预览](#代码与预览)
- [快速部署和体验](#快速部署和体验)
- [在线快速体验](#在线快速体验)
- [在本地部署体验](#在本地部署体验)
- [应用详情](#应用详情)

## 体验前准备

该应用案例,需要您开通[阿里云函数计算](https://fcnext.console.aliyun.com/) 产品;并建议您当前的账号有一下权限存在`FCDefaultRole`

## 代码与预览

- [:octocat: 源代码](https://github.com/devsapp/start-web-framework/tree/master/web-framework/java/springboot/src)
- [:earth_africa: 效果预览](https://img.alicdn.com/imgextra/i3/O1CN01jLfCaE1amQGuXQI8Q_!!6000000003372-2-tps-2594-1558.png)

## 快速部署和体验
### 在线快速体验

- 通过阿里云 **Serverless 应用中心**: 可以点击 [【🚀 部署】](https://fcnext.console.aliyun.com/applications/create?template=start-springboot) ,按照引导填入参数,快速进行部署和体验。

### 在本地部署体验

1. 下载安装 Serverless Devs:`npm install @serverless-devs/s`
> 详细文档可以参考 [Serverless Devs 安装文档](https://github.com/Serverless-Devs/Serverless-Devs/blob/master/docs/zh/install.md)
2. 配置密钥信息:`s config add`
> 详细文档可以参考 [阿里云密钥配置文档](https://github.com/devsapp/fc/blob/main/docs/zh/config.md)
3. 初始化项目:`s init start-springboot -d start-springboot`
4. 进入项目并部署:`cd start-springboot && s deploy`

> 在本地使用该项目时,不仅可以部署,还可以进行更多的操作,例如查看日志,查看指标,进行多种模式的调试等,这些操作详情可以参考[函数计算组件命令文档](https://github.com/devsapp/fc#%E6%96%87%E6%A1%A3%E7%9B%B8%E5%85%B3) ;

## 应用详情

本项目是将 Springboot 项目部署到阿里云 Serverless 平台(函数计算 FC)。

通过 Serverless Devs 开发者工具,您只需要几步,就可以体验 Serverless 架构,带来的降本提效的技术红利。

部署完成之后,您可以看到系统返回给您的案例地址,例如:

![图片alt](https://img.alicdn.com/imgextra/i4/O1CN01Tcewz51vRS4HsahtZ_!!6000000006169-2-tps-2554-918.png)

此时,打开案例地址,就可以进入 Springboot 项目首页:

![图片alt](https://img.alicdn.com/imgextra/i3/O1CN01jLfCaE1amQGuXQI8Q_!!6000000003372-2-tps-2594-1558.png)

> 注意: 如果您这边部署的 Springboot 项目的 jar 包很大, 超过了函数计算最大的 100M 限制,可以参考[函数计算大代码包部署的实践](https://github.com/awesome-fc/fc-faq/blob/main/docs/%E5%A4%A7%E4%BB%A3%E7%A0%81%E5%8C%85%E9%83%A8%E7%BD%B2%E7%9A%84%E5%AE%9E%E8%B7%B5%E6%A1%88%E4%BE%8B.md)
-----

Expand Down

0 comments on commit fa735d0

Please sign in to comment.