Deploying to the Cloud using Vercel
前置任务
建立一个基于flask的web app代码库并上传至github repo
Vercel用途
vercel有点像一个免费的cloud server,帮助你将flask框架下的程序运行在云端。可以public访问。
deploy流程
- 在主文件夹中建立requirements.txt
包含:我们的程序所需的所有libraries,便于开发者同步前置环境,同时让vercel预先装载此环境来部署应用
$ pip freeze > requirements.txt
- 在主文件夹中建立vercel.json
告诉vercel你的请求应该如何被route
{
"rewrites": [
{ "source": "/(.*)", "destination": "/api/app" }
]
}
- 将这两个文件上传至github repo
- 登陆vercel
网址为:https://vercel.com/
使用GitHub account授权登陆 - 添加项目
配置config, import项目,点击deploy - 后续自动部署
每次commit&push到main分支,vercel可以自动redeploy
为了防止自动redeploy可能因代码bug导致服务器崩溃,后续可以使用workflow进行先检查-后部署
workflow示例:
想使用本示例,需要在git repo中添加几个secret key
(1)在vercel中,account setting下,拷贝vercel ID。在project setting下,拷贝Project ID。在account settings token中,新建一个token并拷贝。
(2)在github中,在settings/secret and variables/ actions,添加一个new repository secret, 命名为VERCEL_ORG_ID,值为vercel ID。继续新建一个VERCEL_PROJECT_ID,值为project ID。最后新建一个VERCEL_TOKEN,值为刚刚在vercel中新建的token。
name: Build
on: [push]
jobs:
deploy-to-vercel:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Deploy to Vercel
uses: amondnet/vercel-action@v20
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
vercel-args: '--prod'