基於阿裏的Node全棧之路(一)部署Docker
在經曆多次項目技術改革,現在的技術架構基本穩定下來了。一個人的開發不容易啊,想在這裏分享下自己的一些想法和走過的一些坑,希望能夠幫助到大家。下麵放下我現在的技術架構。
Docker是個好東西,雖然阿裏出了函數計算,但在使用的時候,發現還是缺乏些火候,而且現在的函數計算還是比較適合高CPU型api,鄙見鄙見~
阿裏docker的流程:
1. 創建ali的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服務器,當時隻是部署了三台服務器,一台台的改...
第二天一早就提了個工單,希望能得到處理,發現好像暫時還實現不了,而且好想也不一定有這個必要,我覺得吧,阿裏的同學應該把這個時間問題應該要有個文檔,提醒給使用的同學怎麼處理這個問題。不過如果是公司運營的話,現在一般都有測試,所以上線發生這種問題估計是很少的。
後來對那些訂單的處理方案是讓合作方和他們對接的平台商量,手工處理前後兩天的訂單,處理了三天,內心無比愧疚~
嗯,大家如果是做國內業務,還是最好在dockerfile上加上這句話好了。
最後更新:2017-09-23 17:32:44