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集群时会自动购买绑定。
购买和部署顺序:
购买数据库
购买ECS服务器(包年包月比按量付费便宜),带宽最低即可(因为会走负载均衡的带宽)
容器服务-镜像:新建镜像,选择你的github项目,手动构建一次
容器服务-集群:创建集群(选“不创建节点”和“自动创建负载均衡”)
容器服务-集群:更多-添加已有实例
容器服务-应用:创建应用,web路由规则要填域名
测试:查看负载均衡的IP,本机设置hosts进行访问
云解析
配置https:请看《阿里云如何开启强制HTTPS》
www和根域名二选一:todo
容器服务-应用-点名字进入“详情”:创建触发器,复制触发器链接
容器服务-镜像-镜像仓库控制台-管理-webhook:添加一条
第7步特别注意:阿里云的负载均衡不是80到80,而是80转向ECS的9080,ECS的routing服务再把9080转向docker的80。
访问负载均衡的IP会看到503错误页面,让人误解,以为docker没有正常工作……其实没问题,要用域名访问(需要设置本机hosts进行测试)。如图:
阿里云docker禁止IP访问,会返回503错误
阿里云docker需要设置本机hosts,使用域名进行测试
如果配hosts可以访问,那就可以设置域名解析,上线了。
如果你需要提交git时自动上线,则需要操作11和12步,如图:
容器服务-应用-点名字进入“详情”:创建触发器
容器服务-镜像-镜像仓库控制台-管理-webhook:添加一条
实际效果:玛雅(https://maya.io/)首页加载时间为1秒以内。如图:
玛雅部署在阿里云docker上,首页加载时间为1秒以内
还有个坑:修改配置时,一定要使用“容器服务-应用-变更配置”,而不要使用“容器服务-服务-变更配置”,因为后者会被前者覆盖。
作者:sinkcup
链接:https://www.jianshu.com/p/03e2b9305e27
共同学习,写下你的评论
评论加载中...
作者其他优质文章