基于阿里的Node全栈之路(一)部署Docker

在经历多次项目技术改革,现在的技术架构基本稳定下来了。一个人的开发不容易啊,想在这里分享下自己的一些想法和走过的一些坑,希望能够帮助到大家。下面放下我现在的技术架构。





Docker是个好东西,虽然阿里出了函数计算,但在使用的时候,发现还是缺乏些火候,而且现在的函数计算还是比较适合高CPU型api,鄙见鄙见~

阿里docker的流程:
1. 创建code仓库
2. 创建docker镜像
3. 创建docker容器服务
4. 创建docker的时候,阿里会自动部署负载均衡(https的放在下个文章更新)

一般,我的项目结构是这样的:

  • -project

    • -api // 项目的api
    • -app // React-Native,移动端
    • -www // 项目主页
    • -admin // 项目后端管理系统
    • -h5 // 宣传H5
    • -Dockerfile // 部署api使用

贴上我的api的通用dockerfile

FROM node:7
MAINTAINER Mumudeveloper
#hardcode
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN yarn global add forever

# Create www directory
RUN mkdir -p /api
COPY ./api /api

# Install www dependencies
WORKDIR /api
RUN yarn install

EXPOSE 7001
# Define default command.
ENTRYPOINT forever start  -l forever.log -a index.js && tail -f ~/.forever/forever.log

好!重点来了,敲黑板!
大家注意到我这一行没有,嗯,这是我跑docker的时候遇到的第一个坑啦!

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

去年,做了一个中间商平台,订单是按照时间来定价格了,一个时间一个价格,因为市场是波动的,当时我怀抱着一种很开心很高兴觉得自己很流逼的心情,把项目部署在docker上。部署完后,高高兴兴的睡觉了,因为明天还要上班呢!突然凌晨1点,合作方打电话过来,很急很急的样子,一接电话,我的心都凉了,晚上提交的几千订单,时间错误!!!

急急忙忙的起身,查bug,现在想来都心塞塞...orz...

最后原因找到了,原来是阿里部署的docker是基于原版镜像的,时间是以美国还是伦敦为标准了(具体忘记了),当时我的临时方案是远程登录上了docker服务器,因为只是部署了三台服务器,所以就一台台的改...

第二天一早就提了个工单,希望能得到处理,发现暂时还实现不了,而且优先级也不高。但我觉得吧,阿里的同学应该把这个时间问题写文档,提醒给使用阿里docker的童鞋。不过如果是公司运营的话,一般都有测试,所以上线发生这种问题估计是很少的。

后来对那些订单的处理方案是让合作方和他们对接的平台商量,手工处理前后两天的订单,处理了三天,内心无比愧疚~

嗯,大家如果是做国内业务,还是最好在dockerfile上加上这句话好了。

时间: 2024-08-03 06:54:38

基于阿里的Node全栈之路(一)部署Docker的相关文章

基于阿里的Node全栈之路[源码分享]——打造高效的开发流程

上一次,在社区里面有童鞋说,如果系列文章能够有代码作为基石,会更好理解,也对新手会更加的友好,所以这里整理了下我的框架,然后趁着上个周末不出去玩,搭建了一个仿cnode的一个小论坛,并持续的更新下去. github地址 我的阿里云栖博客 本代码搭建的博客 交流QQ群:428812779 文章列表 基于阿里的Node全栈之路(一)部署Docker 基于阿里的Node全栈之路(二)阿里负载均衡的HTTPS优化方案 基于阿里的Node全栈之路(三)利用阿里云OSS实现前后端分离 基于阿里的Node全栈

基于阿里的Node全栈之路(五)前后端分离进阶-接口篇

上一篇文章我就简单的贴了下代码,放出来不到一天就破千了,这让我非常的意外,也很开心;) 我会好好的把上一篇的代码注释补一下的.然后决定再放一些我的代码和理解,俗话说: Talk is cheap, show me the code! 还记得我的架构中,只有前端静态代码,同时所有的请求是经过跨域发到api上的,那么这次,我们就来好好的分析下request接口的实现和我自己尝试的一种的开发流程--api文档(新接口文档) 先贴上我之前的前后端分离的方式,再简单的介绍下,看过前面文章的同学直接跳过哈!

基于阿里的Node全栈之路(二)阿里负载均衡的HTTPS优化方案

很多时候,我们习惯了自己做负载均衡,自己部署nginx,甚至是自己在代码里实现https.没错这些还是蛮能锻炼动手能力的,但重复造轮子这个话题- 我的主题都是基于阿里云,所以默认各位看官都是用了阿里云的,既然是已经上云了,我觉得上云后的公司更应该是把精力放在业务上,其它方面交给云去处理. 不是我想要去夸阿里云,我自己也是考虑过换云的.今年3月份还是4月份的时候,阿里云在深圳的网络波动,导致我平台上几千个订单提交失败.合作方问我发生了什么事情,后来发现是深圳服务器的网络问题.那个时候,我就很郁闷,

基于阿里的Node全栈之路(六)专有网络VPC的应用

本来打算继续讲讲前后端分离的,但是因为我准备的自开发的博客还没做好,所以还是放到后面几篇文章上好了. 这一篇文章,主要想介绍一下一种网络安全的应用.我也希望有高人能一起交流下这种方式的弱点. 如果用过阿里云容器服务的同学应该都知道,容器的载体还是用镜像生成的的服务器,而这些镜像是阿里自己搞的,所以会有所滞后,所以很多时候,会遇到像图中这种情况,而这些漏洞的升级,又逼得你不得不天天维护,因为这种漏洞出现的概率好高. 我们除了天天去检查漏洞外,还有没有其它的办法能够去处理这些问题呢?做个检查漏洞的,

基于阿里的Node全栈之路(三)利用阿里云OSS实现前后端分离

嘿嘿,上篇文章因为在火车上写的,偷懒了,心存愧疚,还是补发一篇吧! 这次嘞,我们聊聊开发上老生常谈的话题,前后端分离.在文章第一篇里,我用了一张我的架构图,这里我把关于OSS的这部分抽出来. 可以看到这种图上,我的docker是只有restful api的作用,在web端应用,客户访问我的网站的时候,是跳转到OSS上的.没错,没错,在我这里,没有使用类似jsp.asp.ejs这些动态页面.先不说两者的优劣,我这里使用的方案,其实蛮有趣的,而且非常的高效实用!对于中型项目是完全行得通的,大型项目架

新IT运维模式下,全栈溯源助你解应用性能监控难题

2016年,Gartner对APM的定义将原来的五个维度定义修改成了三个维度,即:数字化体验监控(DEM),应用发现.追踪和诊断(ADTD),以及应用分析(AA).此外,Garter还强调,最终用户的体验始终是APM最重要的任务,而APM的核心功能则是能够基于应用去做问题的发现与诊断.这一定义的改变,源于用户在新的IT形势下,对APM提出的新需求. 近年来,公有云和移动互联网的增长,推动了APM市场和技术的快速发展.然而,云计算.微服务和容器化让监控的数据呈海量增长,为APM的发展带来了挑战.微

程序员:如何成为一个全栈的工程师?

全栈工程师,英文 Full Stack developer,是指那些掌握多种技能,并能利用多种技能独立完成产品的人.当然,现在「全栈工程师」很吃香,非常吃香!这是因为在移动互联网时代,IT 系统变得愈加复杂,需要拥有全局思维的工程师来搞定各种「疑难杂症」.不仅要玩得转前端,还要搞得定后端,总之各种技术都懂,所以其重要性可见一斑. 近日,移动开发精英俱乐部围绕「如何成为一个全栈的工程师?」进行了讨论,主持人是优才学院的创始人伍星老师,让我们一起看看大神们的精彩言论吧!(本文系国内 ITOM 管理领

假如你想成为全栈工程师…

让我来发挥一下剪报君的特长,下面是百度百科对[全栈工程师]的说明: 全栈工程师,也叫全端工程师,英文Full Stack developer,是指掌握多种技能,并能利用多种技能独立完成产品的人. 上面的定义,基本上已经比较直白了,我们再举两个例子就更明白了. 假如你是一个Web开发者,如果你既能做前端(需要熟悉HTML.CSS.JavaScript.H5以及Bootstrap.EasyUI等各种前端框架),又能做后端(需要熟悉Java或ASP.net或php或Node.js或Go,选项太多就不一

【实战】基于Nginx、Node.js和Redis的Docker工作流

本文讲的是[实战]基于Nginx.Node.js和Redis的Docker工作流,[编者的话]本文是一篇实践性很强的文章.作者通过一个完整的示例讲述了构建一个基于Nginx.Node.js.Redis的应用服务的Docker流程.推荐所有Docker使用者阅读,并根据文章实践. 在我的前一篇文章中,我已经介绍了关于容器和Docker是如何影响PaaS.微服务和云计算的.如果你刚刚接触Docker和容器,我强烈建议你先读一读我之前的文章.作为之前文章的一个延续,在本文中我仍会讲述一些Docker工