前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从0快速部署一个云托管服务:Python 篇

从0快速部署一个云托管服务:Python 篇

作者头像
腾讯云开发TCB
修改2022-02-11 12:00:09
2.1K0
修改2022-02-11 12:00:09
举报
文章被收录于专栏:云开发云开发

欢迎使用微信云托管,本文将带领你通过云托管创建一个服务,并在小程序和 WEB 端调用此服务(以 Python 为例),本系列会继续更新 PHP、Golang 等其他语言的部署教程(当然,你也可以使用云托管的一键部署功能,基于 Python 语言 Django 或 Flask 框架部署一个服务)。

你可以用趁手的代码编辑器来完成下述代码编辑操作,推荐「Visual Studio Code」

第一步:准备项目

1. 创建一个项目目录,名称任意,本示例中为 hello

你可以用CLI命令,或者可视化方式新建

代码语言:javascript
复制
mkdir hello
cd hello

2. 在项目目录中,新建 Dockerfile 文件,并在文件中填入如下信息

代码语言:javascript
复制
FROM tiangolo/uwsgi-nginx-flask:python3.8
COPY ./app /app

3. 创建app目录,并在目录中创建main.py 文件,并在文件中填入如下代码

代码语言:javascript
复制
import os

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return '欢迎使用微信云托管!'

if __name__ == "__main__":
    app.run(debug=True,host='0.0.0.0',port=int(os.environ.get('PORT', 80)))

第二步:服务的部署和发布

1. 访问微信云托管控制台

访问微信云托管控制台,用微信扫描网页上的登录二维码,进入控制台

进入控制台之前,会提示要求你选择「小程序/公众号」,如果你选择的「小程序/公众号」没有微信云托管环境,则会提示新建。

新建环境时,需要填写环境名称,微信云托管会在你的名称后面追加一串字符组成环境ID。

2. 创建服务

如果你已经有微信云托管环境,则可以直接进入控制台主平台。

点击服务列表中,右上角【新建服务】按钮,在微信云托管环境中创建一个服务

弹出框中填写「服务名称」,在这里名称填写demo,并开启「允许公网访问」

新建服务后,点击服务列表中新建的 demo 服务,进入服务详情

进入服务详情后,点击部署发布下的「新建版本」按钮,与其同展示的还有一个「新建流水线」,这里我们在后面实践

3. 新建版本

点击「新建版本」后调转到版本列表页,继续点击版本列表页中的「新建版本」按钮,弹出新建框

在弹出框中,选择「上传方式」为文件夹,然后在选择附件中选择上传第一步创建的文件夹(注意一定选到文件夹)

上传完毕后,效果如上图所示,点击「新建」按钮,完成版本创建

新建过程最多2分钟,你可以点击版本列表中「日志」按钮,看到实时的构建日志,整体分为「构建」和「部署」两个步骤

4. 部署发布

当版本列表中,版本的状态为 正常 后,点击服务列表下「部署发布」TAB栏,开始发布部署的版本

在页面中,选择刚刚部署好的版本【demo-001】,然后点击右下角的「全量发布」按钮,确认发布。

至此我们完成了一个简单的服务部署和发布过程,你可以在「版本列表」中点击「访问公网域名」按钮,看到如下效果

接下来,我们根据当前的状态,继续深入实践,去探索微信云托管的其他能力使用。

第三步:流水线和灰度发布

1. 在项目目录中,新建 container.config.json 文件,并在文件中填入如下信息

代码语言:javascript
复制
{
  // 监听端口
  "containerPort": 80,
  // Dockerfile 路径
  "dockerfilePath": "Dockerfile",
  // 构建目录
  "buildDir": "",
  // 最小实例数
  "minNum": 0,
  // 最大实例数
  "maxNum": 50,
  // cpu 核数
  "cpu": 0.25,
  // 内存大小,单位:G
  "mem": 0.5,
  // 扩缩容指标类型
  "policyType": "cpu",
  // 扩缩容指标阈值
  "policyThreshold": 60,
  // 环境变量
  "envParams": {},
  // 日志采集路径
  "customLogs": "stdout",
  // 启动检测延迟
  "initialDelaySeconds": 2
}

你可以选择 githubgitlabgitee 中的任意一个建立仓库,上传代码后得到仓库地址,保证根目录中有上述的3个文件

如果你暂时没有git网站账户或者git相关知识,可以先略过这一部分,直接看第四步。

3. 创建流水线

进入「微信云托管控制台」,按照之前的步骤进入 demo 服务详情,点击流水线TAB

在流水线页面点击「新建流水线」按钮,在弹出框中,填写流水线名称为 dev(也可以自己拟定名称)

选择自己仓库所在的代码源,如果第一次使用需要先进行授权,授权完毕后就可以在下面的「代码仓库」中加载账号下的仓库了。

选择刚才自己上传的仓库,分支根据自身仓库情况决定,一般是 main

以上完成后点击「确认」按钮,此时可以在流水线页面中看到流水线,点击「绿色三角icon」按钮,主动启动流水线

你也可以直接尝试更改仓库代码,也可以由仓库变更触发流水线。

触发策略有「代码合并更新触发」和「定时触发」,你可以在之后真实业务时按自身情况选择相关策略。 同一个仓库可以用来触发多个服务的流水线,也可以用来配置单个服务多条流水线

流水线的任何动作都会展示在下面的日志中,你可以点击「日志」按钮来看具体的执行情况。

在流水线一次执行完毕后,就可以前往版本列表看到由流水线生成的版本【demo-002】。

当版本列表中,流水线【demo-002】版本的状态为 正常 后,点击服务列表下「部署发布」TAB栏,开始实践灰度发布部署。

4. 灰度发布

在部署发布页面中,点击「发布」按钮,建立发布单。

在发布单页面,选择版本【demo-002】,然后点击右下角的「进入测试」按钮,进入测试流程。

在测试页面中,你可以通过两种方式来配置测试策略,一种是「openid白名单」,一种是「URL参数」

  • openid白名单:可以在「小程序/公众号」获取用户openid,填写在测试列表中的用户,会使用新的版本提供服务,其他用旧的;
  • url参数:适合WEB网站,可以配置一个或多个get参数,符合条件的路径会使用新的版本提供服务,其他用旧的。

填写后点击右下角「测试配置更新」使整个测试生效,以上两种方式可以同时配置。

当你在真实项目中测试没有问题时,就可以开始灰度发布环节了,点击「灰度上线」按钮:

进入灰度过程后,你可以随意调整比例,来控制新版本在全网流量的占比,并随时在下面的监控中查看日志和运行情况,来判断版本的稳定性。如果有问题,可以点击「回退」按钮结束发布单,流量全部切换为之前的版本。

在整个灰度环节,你可以指定哪些用户一定打到最新版本。

当灰度流量比例设置100%后,就可以点击「结单」按钮,完成发布,此时所有流量都在新的版本中,一轮发布结束。

第四步:调用微信云托管服务

以微信小程序为例:

首先,确认当前调试基础库版本为 2.13.1 以上,可以在开发者工具-详情-本地设置中查看当前的基础库版本。

在小程序中使用如下的代码:

代码语言:javascript
复制
// 确认已经在 onLaunch 中调用过 wx.cloud.init 初始化环境(任意环境均可,可以填空)
const res = await wx.cloud.callContainer({
  config: {
    env: '填入云环境ID', // 微信云托管的环境ID
  },
  path: '/xxx', // 填入业务自定义路径和参数,根目录,就是 / 
  method: 'POST', // 按照自己的业务开发,选择对应的方法
  header: {
    'X-WX-SERVICE': 'xxx', // xxx中填入服务名称(微信云托管 - 服务管理 - 服务列表 - 服务名称),在上述实践中是 demo
  }
  // 其余参数同 wx.request
});

console.log(res);

wx.cloud.callContainer 其他参数,直接参考 wx.request API

因篇幅限制,Web网页、公众号H5、服务端和其他客户端应用的调用,请参见文档:

https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/quickstart/custom/python.html

写到最后

到此,我们完成了微信云托管核心【容器服务】的入门,你可以继续探索控制台的其他能力,在这里做一个引述:

1、业务过程中需要存储数据到数据库、对象存储中,可以参看数据库使用指引、对象存储使用指引;

2、绑定云托管的小程序/公众号在调用服务时,会带入微信生态信息;另外云托管服务可以免鉴权调用微信接口,具体可以参看微信开放能力。

参考文档

https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/quickstart/custom/python.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云开发CloudBase 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2. 在项目目录中,新建 Dockerfile 文件,并在文件中填入如下信息
  • 3. 创建app目录,并在目录中创建main.py 文件,并在文件中填入如下代码
  • 第二步:服务的部署和发布
    • 1. 访问微信云托管控制台
      • 2. 创建服务
        • 3. 新建版本
          • 4. 部署发布
          • 第三步:流水线和灰度发布
            • 1. 在项目目录中,新建 container.config.json 文件,并在文件中填入如下信息
              • 3. 创建流水线
                • 4. 灰度发布
                • 第四步:调用微信云托管服务
                  • 以微信小程序为例:
                  • 写到最后
                  相关产品与服务
                  云托管 CloudBase Run
                  云托管 CloudBase Run(Tencent CloudBase Run,TCBR)是由云开发提供的新一代云原生应用引擎(App Engine 2.0),支持托管任意语言和框架编写的容器化应用。和云开发其他产品(云函数、云数据库、云存储、扩展应用、HTTP 访问服务、静态网站托管等)一起为用户提供云原生一体化开发环境和工具平台,为开发者提供高可用、自动弹性扩缩的后端云服务。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档