阿里云docker部署实践

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

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

产品\区域 华东1杭州 华东2上海 华北1青岛 华北2北京 华南1深圳
mongodb B B A B、C A
ECS BE ABC B ABC AB
ECS系列 III Broadwell
docker集群 BE ABC B ABC AB
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进行测试)。如图:

阿里云docker部署实践_第1张图片
阿里云docker禁止IP访问,会返回503错误
阿里云docker部署实践_第2张图片
阿里云docker需要设置本机hosts,使用域名进行测试

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

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

阿里云docker部署实践_第3张图片
容器服务-应用-点名字进入“详情”:创建触发器
阿里云docker部署实践_第4张图片
容器服务-镜像-镜像仓库控制台-管理-webhook:添加一条

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

阿里云docker部署实践_第5张图片
玛雅部署在阿里云docker上,首页加载时间为1秒以内

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

你可能感兴趣的:(阿里云docker部署实践)