一、背景
最近手上正好有个新项目要部署上线,之前的部署方式都是直接用云服务器,一般都是买包年包月的,刚好在微信社区看到了微信云托管,而且还有活动赠送代金券,马上就开始了云托管调研。
经过一番简单了解后,安装体验了几个模板部署服务,还安装了微擎一键部署,对云托管有了初步的认识和实操,可以看下面总结的文章:
微擎新版云安装全程体验,微信云托管必将一统江湖! juejin.cn/post/706847…
二、容器
容器化部署是云托管的必要条件,之前没有过多了解过容器化,正好趁这次项目部署,好好研究一下容器。
1.在本地安装Docker程序
2.学习基础知识,强烈建议阅读一遍Dockerfile配置教程
developers.weixin.qq.com/miniprogram… yeasy.gitbook.io/docker_prac…
3.编写Dockerfile配置文件
网上搜索有很多相关的例子文件,这里就不展开说了
4.创建&运行容器
参考命令:
# 创建镜像,名称为app,TAG为1.0.0
docker build -t app:1.0.0 ./
# 运行镜像,可指定mysql、redis等配置参数,项目内可通过环境变量读取,host地址是宿主机
docker run --name app1 -e DB_HOST=host.docker.internal -e DB_USERNAME=root -e DB_PASSWORD=123456 -e REDIS_HOST=host.docker.internal -d -p 8080:80 app:1.0.0
5.上传云托管
本地测试容器运行成功后,即可上传到云托管测试,有多种上传方式,可以根据自己的情况选择,我为了方便测试选择了手动上传代码包,选择压缩包,然后设置环境变量,数据库需要提前创建。
三、遇到的一些坑
坑1:云托管不能自己创建redis服务
因为目前仅支持http协议,而redis需要使用tcp协议,只能去腾讯云购买一个redis服务,选了一个最小的配置256M,价格挺便宜的,一个月才19元。
坑2:无法绑定泛域名解析
域名可以绑定多个,好像没有数量限制,不过不能设置泛域名解析,如果项目必须要使用泛域名,建议暂时不要考虑云托管了,这个问题我已经给官方反馈了,他们需要评估一下。
坑3:账户欠费的报错提示问题
如果多次测试产生了费用,并且删除过环境后,再次创建会一直报错,无论是模板部署还是自定义都会出问题。
此时需要清缴欠费,并且删除环境重新创建环境,才能恢复正常,这个场景属于bug,已反馈官方修复。
坑4:访问应用时提示数据库连接错误
这个问题是因为mysql默认开启了自动暂停功能,如应用10分钟内没有访问流量会自动暂停,导致数据库无法连接报错,再次刷新可恢复正常,如影响线上使用可关闭这个开关,或者在应用中添加重新连接的逻辑,建议根据项目运营情况开启这个功能,因为暂停期间将不会产生计费,可以节省成本。
四、费用
我是从3月初开始上传云托管测试,产生的流量都是测试,没有对外正式部署开放,因为部署到最后发现不支持泛域名,而项目中必须要用到这个,所以费用数据仅供参考,做为一个非线上项目产生的费用,实际的花费只有购买的redis服务支付了19元,云托管是领取的代金券,总共消耗了大约15元,正常情况下大概2-3元/天。
五、总结
之所以使用云托管,我更看重的是:微信用户就近接入,访问速度更快,以及流水线自动化。
最后,希望云托管填上所有的坑,更加方便开发者使用,提升开发和运维效率,让用户体验越来越好!