继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

阿里云docker部署实践

慕的地10843
关注TA
已关注
手记 1081
粉丝 200
获赞 961

docker可以很方便的保持环境一致性,让创业不需要运维了,后端工程师搭建部署整套环境即可。本文以阿里云为例,讲解如何部署一个web/api项目。

首先根据项目需求选择数据库,最简单的是mysql,但不支持LBS(比如附近的人),如果需要LBS,则首选pgsql。如果需要属性无限增加(比如玛雅(maya.io)是对商品进行数据化,属性是未知的),则不能用关系型数据库,需要用JSON这种结构化数据结构,比如mongoDB。考虑到后端服务器要和数据库在一个区,这样网速最快,所以先看看阿里云的区域:

产品\区域华东1杭州华东2上海华北1青岛华北2北京华南1深圳
mongodbBBAB、CA
ECSBEABCBABCAB
ECS系列 III Broadwell
docker集群BEABCBABCAB
docker镜像仓库

可以得到这些结论:

  • mongoDB的可选区域比服务器少,所以要先买数据库,再买相同区的服务器。比如华北1的数据库在A区,而服务器在B区,有点尴尬。

  • 上海的ECS最先进,但没有docker镜像,而杭州有docker镜像,部署会快一点(实测影响不大)。

注意:不要事先购买负载均衡,因为创建docker集群时会自动购买绑定。

购买和部署顺序:

  1. 购买数据库

  2. 购买ECS服务器(包年包月比按量付费便宜),带宽最低即可(因为会走负载均衡的带宽)

  3. 容器服务-镜像:新建镜像,选择你的github项目,手动构建一次

  4. 容器服务-集群:创建集群(选“不创建节点”和“自动创建负载均衡”)

  5. 容器服务-集群:更多-添加已有实例

  6. 容器服务-应用:创建应用,web路由规则要填域名

  7. 测试:查看负载均衡的IP,本机设置hosts进行访问

  8. 云解析

  9. 配置https:请看《阿里云如何开启强制HTTPS》

  10. www和根域名二选一:todo

  11. 容器服务-应用-点名字进入“详情”:创建触发器,复制触发器链接

  12. 容器服务-镜像-镜像仓库控制台-管理-webhook:添加一条

第7步特别注意:阿里云的负载均衡不是80到80,而是80转向ECS的9080,ECS的routing服务再把9080转向docker的80。

访问负载均衡的IP会看到503错误页面,让人误解,以为docker没有正常工作……其实没问题,要用域名访问(需要设置本机hosts进行测试)。如图:

webp

阿里云docker禁止IP访问,会返回503错误

webp

阿里云docker需要设置本机hosts,使用域名进行测试

如果配hosts可以访问,那就可以设置域名解析,上线了。

如果你需要提交git时自动上线,则需要操作11和12步,如图:

webp

容器服务-应用-点名字进入“详情”:创建触发器

webp

容器服务-镜像-镜像仓库控制台-管理-webhook:添加一条

实际效果:玛雅(https://maya.io/)首页加载时间为1秒以内。如图:

webp

玛雅部署在阿里云docker上,首页加载时间为1秒以内

还有个坑:修改配置时,一定要使用“容器服务-应用-变更配置”,而不要使用“容器服务-服务-变更配置”,因为后者会被前者覆盖。

             




作者:sinkcup
链接:https://www.jianshu.com/p/03e2b9305e27


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP