【Web Function】云函数 vapor 基础部署流程
2023-04-18 14:44:58 时间
现在web云函数并没有单独给出 custom runtime,这里我们使用 Go1环境 进行部署。理论上我们可以使用任一环境 此方法也适用于其他编译语言
部署主要分两步
- 构建部署文件
- 通过yml 部署应用
这里我们通过一个现有项目进行演示 身份数字管控平台
https://github.com/VineFiner/ciam-hello.git
创建部署文件
这里整体意思是得到需要部署的二进制文件
可以编写自己部署语言的构建 Dockerfile
#!/bin/sh
# 当前目录
echo $PWD
############## 构建可执行二进制文件 ##########
# 构建
docker run --rm
-v "$PWD:/workspace"
-w /workspace
swift:5.5.2-centos7
/bin/bash -cl "
yum update -y
&& yum remove git -y
&& yum install https://packages.endpoint.com/rhel/7/os/x86_64/endpoint-repo-1.7-1.x86_64.rpm -y
&& yum install git -y
&& git config --global url."https://ghproxy.com/https://".insteadOf https://
&& swift package resolve
&& swift build -c release --static-swift-stdlib"
# 复制构建产物, 复制资源文件
docker run --rm
-v "$PWD:/workspace"
-w /workspace
centos
/bin/bash -cl '
rm -rf .build/install && mkdir -p .build/install &&
cp -P .build/release/Run .build/install/'
############## 函数部署 ###################
# 创建启动文件
touch .build/install/scf_bootstrap && chmod +x .build/install/scf_bootstrap
# 写入启动内容
cat > .build/install/scf_bootstrap<<EOF
#!/usr/bin/env bash
# export LD_LIBRARY_PATH=/opt/swift/usr/lib:${LD_LIBRARY_PATH}
./Run serve --env production --hostname 0.0.0.0 --port 9000
EOF
# 压缩文件夹
# cd .build/install && zip --symlinks -r app-0.0.1.zip *
cp -r .build/install ./install
# END
- 查看文件
cd install
[vine@VM-8-15-centos install]$ ls
libBlocksRuntime.so libicuucswift.so.65 Public
libdispatch.so libswift_Concurrency.so Resources
libFoundation.so libswiftCore.so Run
libicudataswift.so.65 libswiftDispatch.so scf_bootstrap
libicui18nswift.so.65 libswiftGlibc.so
[vine@VM-8-15-centos install]$
通过yml 部署应用
现在我们把上一步构建的内容部署到云函数
######### 函数部署 ###############
# 删除 yaml 文件
rm -rf serverless.yml
# 创建 yaml 文件
slsplus parse --output --auto-create --sls-options='{"component":"scf","name":"${env:INSTANCE_NAME}","org":"${env:TENCENT_APP_ID}","app":"${env:APP_NAME}","inputs":{"name":"${env:APP_NAME}","region":"${env:REGION}","runtime":"${env:RUNTIME}","type":"web","src":{"src":"./install","exclude":[".env"]},"memorySize":64,"environment":{"variables":{"CIAM_CLIENTID":"${env:CIAM_CLIENTID}","CIAM_CLIENTSECRET":"${env:CIAM_CLIENTSECRET}","CIAM_USERDOMAMIN":"${env:CIAM_USERDOMAMIN}","CIAM_REDIRECTURI":"${env:CIAM_REDIRECTURI}","CAIM_LOGOUTREDIRECTURL":"${env:CAIM_LOGOUTREDIRECTURL}"}},"events":[{"apigw":{"parameters":{"serviceName":"ciam_hello_serverless","description":"ciam hello","endpoints":[{"function":{"isIntegratedResponse":true},"method":"ANY","path":"/"}],"protocols":["http","https"],"environment":"release"}}}]}}' && cat serverless.yml
# 添加环境变量
# cp SCF/Template/env .env
# 部署
sls deploy --force --debug
# END
创建 yml 文件
对于 yml 文件配置信息,我们可以查看
https://github.com/serverless-components/tencent-scf/blob/master/docs/configure.md
- 安装 serverless 环境
pnpm install -g serverless
因为
Xcode
对yml
编辑不是很友好,创建出来的 yml 文件格式不对。导致部署失败. 这里我们使用slsplus
进行创建 个人建议使用这种方法创建,不会出现莫名错误
- 安装方式如下
npm install -g @slsplus/cli
json
和yml
对比图如下
- 使用
slsplus
进行创建
# 创建 yaml 文件
slsplus parse --output --auto-create --sls-options='{"component":"scf","name":"${env:INSTANCE_NAME}","org":"${env:TENCENT_APP_ID}","app":"${env:APP_NAME}","inputs":{"name":"${env:APP_NAME}","region":"${env:REGION}","runtime":"${env:RUNTIME}","type":"web","src":{"src":"./install","exclude":[".env"]},"memorySize":64,"environment":{"variables":{"CIAM_CLIENTID":"${env:CIAM_CLIENTID}","CIAM_CLIENTSECRET":"${env:CIAM_CLIENTSECRET}","CIAM_USERDOMAMIN":"${env:CIAM_USERDOMAMIN}","CIAM_REDIRECTURI":"${env:CIAM_REDIRECTURI}","CAIM_LOGOUTREDIRECTURL":"${env:CAIM_LOGOUTREDIRECTURL}"}},"events":[{"apigw":{"parameters":{"serviceName":"ciam_hello_serverless","description":"ciam hello","endpoints":[{"function":{"isIntegratedResponse":true},"method":"ANY","path":"/"}],"protocols":["http","https"],"environment":"release"}}}]}}' && cat serverless.yml
完成时我们可以看到我们创建的 serverless.yml 文件
最后进行部署
# 添加环境变量
# cp SCF/Template/env .env
# 部署
sls deploy --force --debug
# END
- 因为我们的
yml
文件里面有一些需要配置,这里我们使用 env 进行配置
cp SCF/Template/env .env
- 对于文件夹部署,有时间会丢失权限,这里我们添加参数
force
# 部署
sls deploy --force --debug
最后我们扫码授权就可以部署成功了。
相关文章
- AI时代的管理者需要掌握什么技能?74%高管认为是情商
- Linux虚拟机(CentOS) 教程看这一篇就够!
- 2022年值得推荐的RPA工具
- 5G来了,工业物联网初创企业的主流采用也来了
- 边缘人工智能:部署前需要考虑的三个技巧
- 人工智能正在触动和改变的六大行业
- 阿里云全新容器服务ACK Anywhere :拓展云边界至企业每个场景
- 基于个人喜好和生活习惯,成都大学用算法推荐为新生匹配室友!网友:建议全国推广
- 微步在线成功入围CDM 2021 Black Unicorn Awards
- 手把手教你 Socket 通信(TCP/IP)
- 熟悉存储虚拟化软件选项
- 如何在物理机上运行混沌试验?
- 关于云原生安全,你得关注这些事!
- 代码智能技术如何应用到日常开发?
- 机器学习超参调优:常用八种方法
- 从容器平台到微服务架构,当当网的云原生之路
- Omdia观点:CNF是电信运营商实现5G承诺的关键
- “智能新生态,开放新时代” 2021智能云边开源峰会即将拉开帷幕,共话开源与创新
- ARPANET 协议是如何工作的
- 斯坦福李飞飞团队新研究登 Nature 子刊:实现可信 AI,数据的设计、完善、评估是关键