前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Web Function】云函数 vapor 基础部署流程

【Web Function】云函数 vapor 基础部署流程

原创
作者头像
Vine
修改2021-12-27 12:18:00
6100
修改2021-12-27 12:18:00
举报
文章被收录于专栏:Swift ServerSwift Server

现在web云函数并没有单独给出 custom runtime,这里我们使用 Go1环境 进行部署。理论上我们可以使用任一环境 此方法也适用于其他编译语言

部署主要分两步

  1. 构建部署文件
  2. 通过yml 部署应用

这里我们通过一个现有项目进行演示 身份数字管控平台

https://github.com/VineFiner/ciam-hello.git

创建部署文件

这里整体意思是得到需要部署的二进制文件

可以编写自己部署语言的构建 Dockerfile

boot.sh

代码语言:txt
复制
#!/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
  • 查看文件
代码语言:txt
复制
cd install
代码语言:txt
复制
[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 部署应用

现在我们把上一步构建的内容部署到云函数

代码语言:txt
复制
######### 函数部署 ###############

# 删除 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 环境
代码语言:txt
复制
pnpm install -g serverless

因为 Xcodeyml 编辑不是很友好,创建出来的 yml 文件格式不对。导致部署失败. 这里我们使用 slsplus 进行创建 个人建议使用这种方法创建,不会出现莫名错误

  • 安装方式如下
代码语言:txt
复制
npm install -g @slsplus/cli
  • jsonyml 对比图如下
WeChate98601b9aff833530357dee9b4012aa3.jpg
WeChate98601b9aff833530357dee9b4012aa3.jpg
  • 使用 slsplus 进行创建
代码语言:txt
复制
# 创建 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 文件

最后进行部署

代码语言:txt
复制
# 添加环境变量
# cp SCF/Template/env .env

# 部署
sls deploy --force --debug

# END
  • 因为我们的 yml 文件里面有一些需要配置,这里我们使用 env 进行配置
代码语言:txt
复制
cp SCF/Template/env .env
  • 对于文件夹部署,有时间会丢失权限,这里我们添加参数 force
代码语言:txt
复制
# 部署
sls deploy --force --debug

最后我们扫码授权就可以部署成功了。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建部署文件
  • 通过yml 部署应用
    • 现在我们把上一步构建的内容部署到云函数
      • 创建 yml 文件
        • 最后进行部署
          • 最后我们扫码授权就可以部署成功了。
          相关产品与服务
          云函数
          云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档