欢迎使用微信云托管,本文将带领你通过云托管创建一个服务,并在小程序端调用此服务(以 Golang 为例),本系列会继续更新 PHP 部署教程(当然,你也可以使用云托管的一键部署功能,基于 golang 语言搭建 HTTP服务端实例)。
第一步:准备项目
1. 创建一个项目目录,名称任意,本示例中为 hello
你可以用CLI命令,或者可视化方式新建
代码语言:javascript复制mkdir hello
cd hello
2. 在项目目录中,新建 Dockerfile
文件,并在文件中填入如下信息
代码语言:javascript复制FROM golang:1.13 as builder
RUN mkdir /app
ADD . /app/
WORKDIR /app
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/main .
CMD ["/app/main"]
3. 创建helloworld.go
文件,并在文件中填入如下代码
代码语言:javascript复制package main
import (
"fmt"
"log"
"net/http"
"os"
)
func handler(w http.ResponseWriter, r *http.Request) {
target := "欢迎使用微信云托管!"
fmt.Fprintf(w, "%s!n", target)
}
func main() {
http.HandleFunc("/", handler)
port := os.Getenv("PORT")
if port == "" {
port = "80"
}
}
第二步:服务的部署和发布
1. 访问微信云托管控制台
访问微信云托管控制台,用微信扫描网页上的登录二维码,进入控制台
进入控制台之前,会提示要求你选择「小程序/公众号」,如果你选择的「小程序/公众号」没有微信云托管环境,则会提示新建。
新建环境时,需要填写环境名称,微信云托管会在你的名称后面追加一串字符组成环境ID
2. 创建服务
如果你已经有微信云托管环境,则可以直接进入控制台主平台
点击服务列表中,右上角【新建服务】按钮,在微信云托管环境中创建一个服务
弹出框中填写「服务名称」,在这里名称填写demo
,并开启「允许公网访问」
新建服务后,点击服务列表中新建的 demo
服务,进入服务详情
3. 创建第一个版本
进入服务详情默认在「部署发布」栏中,在「选择方式」中指定「手动上传代码包」
然后选择「上传方式」为文件夹,在「选择文件」中选择上传第一步创建的文件夹(注意一定选到文件夹)
上传完毕后,效果如上图所示,点击「发布」按钮,开始版本部署
之后会跳转至部署发布流程,可以看到构建日志,整体分为「构建」和「部署」两个步骤,时间大概持续3分钟。
如果中途部署出现问题,你可以复制上图中标识位置的信息到官方交流群或者提工单反馈。
4. 部署发布
当部署完毕后,会显示如下效果:
在线上版本处,点击公网域名访问,看到如下效果
接下来,我们根据当前的状态,继续深入实践,去探索微信云托管的其他能力使用。
第三步:流水线和灰度发布
1. 将项目目录上传至自己的git网站,并建立git仓库
你可以选择 github
, gitlab
, gitee
中的任意一个建立仓库,上传代码后得到仓库地址,保证根目录中有上述的3个文件
如果你暂时没有git网站账户或者git相关知识,可以先略过这一部分,直接看第四步。
3. 在部署发布中,点击「发布」按钮
新建一个发布单,此时选择方式为「绑定代码仓库」,具体什么形式根据上一步自己仓库所在指定。
如果第一次使用需要先进行授权,授权完毕后就可以在下面的「代码仓库」中加载账号下的仓库了。
选择刚才自己上传的仓库,分支根据自身仓库情况决定,一般是 main
勾选灰度发布,完成后点击「发布」按钮。
接下来,就进入了部署构建环节,和之前效果一致。
此时你配置的代码仓库信息已经保存在「服务设置-流水线」中,你可以前往修改,此后发布时,可以直接选择「执行流水线」,不需要每次配置仓库信息。详细文档
部署完毕后自动进入测试和灰度发布环节
4. 测试和灰度发布
在测试页面中,你可以通过两种方式来配置测试策略,一种是「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
以上PHP例子访问的代码如下(在小程序项目 app.js
中覆盖写入如下代码)
App({
onLaunch: async function () {
wx.cloud.init({
// env: "其他云开发环境,也可以不填" // 此处init的环境ID和微信云托管没有作用关系,没用就留空
});
const res = await wx.cloud.callContainer({
config: {
env: "微信云托管ID", // 微信云托管环境ID,不能为空,替换自己的
},
path: '/',
method: 'GET',
header: {
'X-WX-SERVICE': 'demo',
}
});
console.log(res); // 在控制台里查看打印
}
});
到此,我们完成了微信云托管核心【容器服务】的入门,你可以继续探索控制台的其他能力,在这里做一个引述:
1、业务过程中需要存储数据到数据库、对象存储中,可以参看数据库使用指引、对象存储使用指引;
2、绑定云托管的小程序/公众号在调用服务时,会带入微信生态信息;另外云托管服务可以免鉴权调用微信接口,具体可以参看微信开放能力。
参考文档
https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/quickstart/custom/golang.html
腾讯云红包封面免费领
腾讯云两款封面免费领取!
关注云开发公众号,回复【红包】即可获得两款红包封面的领取二维码。