摘要: 在本文中,將會通過一個簡單的例子來介紹使用阿裡雲容器服務進行containerOps的實踐與經驗。## 第一個E2E的containerOps的例子從DevOps的角度來講,最核心的本質是從開發到部署的流程。傳統的DevOps的流程大致的步驟如下。
前言
在本文中,將會通過一個簡單的例子來介紹使用阿裡雲容器服務進行containerOps的實踐與經驗。
第一個E2E的containerOps的例子
從DevOps的角度來講,最核心的本質是從開發到部署的流程。傳統的DevOps的流程大致的步驟如下。
而對於containerOps來講大致的流程如下
那麼對於第一個E2E的場景,我們可以做的更簡單一點,我們要完成的是對於一個已經部署上線的套用,如何進行自動更新。
我們先簡單的以一個nodejs的套用為例,這個套用使用使用express做一個簡單的動態網站,利用mocha作為單元測試架構,要完成的流程如下:
0.準備好nodejs的環境
安裝nvm(nodejs的組建管理器)
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
安裝指定組建的nodejs
nvm install v5.7.1(可以使用nvm ls-remote查看可以安裝的組建)
安裝yeoman(nodejs的一個專案腳手架集合)
npm install -g yo
安裝node-mocha的seeed
npm install -g generator-node-mocha
1.準備好nodejs套用:
在本文中採用的yeoman作為腳手架,使用的seed是node-mocha。
yo node-mocha //生成公共template
安裝express架構
npm install express --save-dev
在lib目錄下新增demo_server.js檔案
var text = require('./demo')
var express = require('express');
var app = express();
app.get('/', function (req, res) {
res.send('Hello World! ' + text.awesome() );
});
var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});
嘗試在項目的根目錄執行project
node lib/demo_server.js
存取瀏覽器localhost:3000即可看到
測試單元測試,根目錄執行指令
npm test
可以得到結果,表示所有的測試結果已經通過
2.進行Docker化
注:一定要將目錄中的.gitignore檔案中node_modules那行移除掉。否則無法執行容器。
下面我們新增Dockerfile
FROM node:5.7.1-slim
MAINTAINER Ringtail
ADD ./ /workspace
EXPOSE 3000
EXPOSE 22
ENTRYPOINT ["node","/workspace/lib/demo_server.js"]
對於我們現在這個套用屬於比較簡單的,我們就直接採用阿裡雲的HUB進行build,對於正常的套用來講,最好在本地進行build驗證下在使用自動構建
構建的時候最好勾選海外機器構建,對於需要使用mirror源的場景可以非常給力的加速。
構建完畢後,在容器服務中通過compose範本構建套用
express:
image: 'registry.aliyuncs.com/ringtail/nodejs-demo:0.1'
expose:
- '22'
- '3000'
restart: always
labels:
aliyun.routing.port_3000: express
容器啟動後可以查看相應的位址
存取位址即可看到
下面我們開始讓hub與容器服務整合,在容器服務的套用之下,選擇建立觸發程序
建立完畢後可以看到生成了一串獨特的URL
回到hub中,我們將生成的這個hook的trigger位址作為一條webhook填寫到hub中
此時我們的已經將hub和重新部署結合起來的,下面我們坐下驗證。修改我們的原始程式碼,並提交到master
此時發現hub已經開始自動構建
當構建完成後,查看套用的部署記錄發現套用已經重新部署
此時打開瀏覽器進行驗證
至此第一個可以進行半自動部署的e2e場景就跑通了。在下一篇本文中,我們將會上線一個CIserver進行持續整合,仍然使用這個demo作為基礎項目。
相關產品:
- 容器服務(Docker)
- 阿裡雲辦公
- 阿裡綠網
- 雲端服務器ECS