DevOps與阿裡雲容器服務(二)

來源:互聯網
上載者:User

摘要: 在本文中,將會通過一個簡單的例子來介紹使用阿裡雲容器服務進行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作為基礎項目。

相關產品:

  1. 容器服務(Docker)
  2. 阿裡雲辦公
  3. 阿裡綠網
  4. 雲端服務器ECS
相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.