成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

container-as-a-service-0x02 -- 項(xiàng)目構(gòu)建&部署之道

arashicage / 575人閱讀

container-as-a-service-0x02 -- 項(xiàng)目構(gòu)建&部署之道

By 蘇依蜀黍 . 2016.06.08

分析

之前寫了兩篇,算是比較完善的稱述了就目前的業(yè)務(wù),容器服務(wù)在我司的應(yīng)用,但是沒有比較具體的講如何構(gòu)建以及部署,所以這一篇主要講如何對(duì)項(xiàng)目進(jìn)行容器化以及如何部署,對(duì)我司業(yè)務(wù)分類以后可以有以下幾種類型:

python應(yīng)用

node.js應(yīng)用

php應(yīng)用

nginx服務(wù)

docker服務(wù)(server)

進(jìn)一步分大類就只有兩種:

應(yīng)用

服務(wù)

至于項(xiàng)目代碼,大概是有兩到三個(gè)代碼倉:

coding

github

gitlab(私有庫)

構(gòu)建 配置參考

項(xiàng)目?jī)?nèi)添加一個(gè)Dockerfile在根目錄即可,如下是php-nginx的配置

#++++++++++++++++++++++++++++++++++++++
# Ubuntu 14.04 PHP-Nginx Docker container
#++++++++++++++++++++++++++++++++++++++

FROM webdevops/php:ubuntu-14.04
MAINTAINER [email protected]
LABEL vendor=WebDevOps.io
LABEL io.webdevops.layout=5
LABEL io.webdevops.version=0.21.0

ENV WEB_DOCUMENT_ROOT  /app
ENV WEB_DOCUMENT_INDEX index.php
ENV WEB_ALIAS_DOMAIN   *.vm

# THINKPHP ENV 
# TP_CONFIG maybe one of aliyun-inner-pro,aliyun-outer-pro,aliyun-outer-test,localhost-dev,localhost-test
ENV TP_DEBUG    false    
ENV TP_CONFIG    aliyun_outer_pro      

# Install nginx
RUN /usr/local/bin/apt-install 
        nginx

# Deploy scripts/configurations


RUN     mkdir -p /app
WORKDIR    /app

COPY     src/    /app/
COPY     conf/    /opt/docker/

RUN echo $TP_DEBUG > ThinkPHP.txt
RUN echo $TP_CONFIG >> ThinkPHP.txt

RUN bash /opt/docker/bin/control.sh provision.role.bootstrap webdevops-nginx 
    && bash /opt/docker/bin/control.sh provision.role.bootstrap webdevops-php-nginx 
    && bash /opt/docker/bin/bootstrap.sh

EXPOSE 80 443

CMD ["supervisord"]
鏡像的第三方構(gòu)建服務(wù)(我司在用&以及支持的代碼倉)

阿里云容器服務(wù)自動(dòng)構(gòu)建

github

bitbucket

local

aliyun code

Daocloud自動(dòng)構(gòu)建

github

bitbucket

coding

gitlab(付費(fèi)&企業(yè)版功能)

鏡像的私有構(gòu)建方案

gitlab-runner

jenkins

local push

#通過webhook實(shí)現(xiàn)

不論第三方服務(wù)還是私有構(gòu)建都是做了三件事:

# mkdir dir & pull code
cd workspace &&  mkdir {project name} && git pull {project repo} .

# build 
docker build -t {project imageName}:{project commitId} .

# push image
docker push 
部署 容器部署

前一篇我們使用rancher-server作為docker的管理中心(可選的還有dcos、ucp等),其實(shí)在啟動(dòng)鏡像的時(shí)候,我們就已經(jīng)在選擇鏡像了

“nginx”就是鏡像,這個(gè)鏡像可以來自docker-hub也可以來自私有Registry

混合方案

有兩個(gè)比較有名的工具,python的用戶應(yīng)該聽說過fabric,有興趣的可以看下面的參考鏈接;另一個(gè)是ansible,同樣也在下面的參考鏈接里。這里要說的是ansible強(qiáng)大的遠(yuǎn)程管理功能:

批量在遠(yuǎn)程服務(wù)器執(zhí)行命令

可選在那些機(jī)器上執(zhí)行

可選每次執(zhí)行的數(shù)量

強(qiáng)大的playbook

可定義任務(wù)隊(duì)列以及根據(jù)不同的情況決定如何執(zhí)行

可重復(fù)(執(zhí)行過的不再執(zhí)行)

more

更多請(qǐng)參考ansible文檔

好像偏題了,那么這樣說,用ansible我們可以至少可以做兩件事:

構(gòu)建docker鏡像(根據(jù)情況選擇海外或者國內(nèi))

手動(dòng)部署&更新代碼 or 更新 容器 或者 容器內(nèi)的代碼

有這兩項(xiàng)功能,能做的事情,就比較多了,示例如下:

---
- hosts: webservers
  vars:
    http_port: 80
    max_clients: 200
  remote_user: root
  tasks:
  - name: ensure apache is at the latest version
    yum: name=httpd state=latest
  - name: write the apache config file
    template: src=/srv/httpd.j2 dest=/etc/httpd.conf
    notify:
    - restart apache
  - name: ensure apache is running (and enable it at boot)
    service: name=httpd state=started enabled=yes
  handlers:
    - name: restart apache
      service: name=httpd state=restarted
CI 第三方服務(wù)的持續(xù)集成

Daocloud支持持續(xù)集成

阿里云在容器服務(wù)控制臺(tái)可以配置

私有構(gòu)建方案的持續(xù)集成

這里就更明確了,即在playbook執(zhí)行完以后,通過rancher的api去更新容器或者服務(wù),這里可參考文檔rancher文檔。

參考

dockerizing-your-frontend-project

dockerizing-a-node-js-web-app

python-fabric

ansible documents

rancher api documents

基于Docker & Fabric的Web項(xiàng)目部署方案

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26618.html

相關(guān)文章

  • container-as-a-service-0x01 -- 基于Docker的私有云&混合

    摘要:基于的私有云混合云構(gòu)建方案蘇依蜀黍是一個(gè)開源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級(jí)的可移植的自給自足的容器。開發(fā)者在筆記本上編譯測(cè)試通過的容器可以批量地在生產(chǎn)環(huán)境中部署,包括虛擬機(jī)集群和其他的基礎(chǔ)應(yīng)用平臺(tái)。 container-as-a-service-0x01 -- 基于Docker的私有云&混合云構(gòu)建方案 By 蘇依蜀黍 . 2016.06.07 what Docker是一...

    import. 評(píng)論0 收藏0
  • container-as-a-service-0x00 -- 基于Docker的私有云&混合

    container-as-a-service-0x00 -- 基于Docker的私有云&混合云搭建需求 preface 使用docker對(duì)node以及php等程序進(jìn)行打包以實(shí)現(xiàn)快速分發(fā)部署上線后,隨之而來的需求是: 統(tǒng)一更大規(guī)模的服務(wù)器集群為資源池,即不再區(qū)分具體的服務(wù)器,而是將所有的服務(wù)器資源歸為一個(gè)資源池,根據(jù)需要,隨時(shí)創(chuàng)建移除資源,以應(yīng)對(duì)更大數(shù)量的資源請(qǐng)求以及,減少資源浪費(fèi)。故而,我們使用n...

    Julylovin 評(píng)論0 收藏0
  • Gitlab CI/CD執(zhí)行流程

    一、什么是CI/CDCI 持續(xù)集成CD 持續(xù)交付CI/CD就是在開發(fā)階段,通過自動(dòng)化發(fā)布,來頻繁部署應(yīng)用的一種方式二、為什么要配置CI/CD想象一下,一個(gè)項(xiàng)目的發(fā)布如果手動(dòng)部署,需要的操作有:?jiǎn)卧獪y(cè)試打包文件上傳服務(wù)器等等如果每個(gè)過程都需要手動(dòng)執(zhí)行,每次都要保證不出錯(cuò),這個(gè)已經(jīng)很繁瑣了。而現(xiàn)在大的前端項(xiàng)目多達(dá)10+的人開發(fā),而且人員流動(dòng)大。如果每個(gè)人都這么發(fā)布,快速迭代就容易出錯(cuò)。這時(shí)候就需要CI...

    社區(qū)管理員 評(píng)論0 收藏0
  • PHP新手開發(fā)者的路線建議

    摘要:年開發(fā)者應(yīng)該熟練使用,并且知道版本更新內(nèi)容。對(duì)開發(fā)和運(yùn)維人員來說,最希望的就是一次性創(chuàng)建或配置,可以在任意地方正常運(yùn)行。是標(biāo)準(zhǔn)規(guī)范,是開發(fā)的實(shí)踐標(biāo)準(zhǔn)。對(duì)開發(fā)者來說語言推薦和,全棧的選擇非常多,推薦熱門的 前言 在前天(2018-08-02)已經(jīng)發(fā)布了PHP 7.3.0.beta1 Released 如果你還沒有使用 PHP7 ,那真的很遺憾。2018年P(guān)HP開發(fā)者應(yīng)該熟練使用 PHP7...

    klinson 評(píng)論0 收藏0
  • 企業(yè)互聯(lián)網(wǎng)應(yīng)用高性能解決之道

    摘要:本文介紹了企業(yè)互聯(lián)網(wǎng)開發(fā)及運(yùn)維的一些實(shí)踐,深入剖析了互聯(lián)網(wǎng)項(xiàng)目開發(fā)及上線過程中的各種痛點(diǎn)及解決之道。線上出錯(cuò),我們通過收集服務(wù)器端應(yīng)用性能數(shù)據(jù)的方式,實(shí)時(shí)展示應(yīng)用的調(diào)用拓?fù)鋱D,并根據(jù)出現(xiàn)異常的請(qǐng)求,進(jìn)行下鉆,定位出具體出現(xiàn)問題的代碼。 本文介紹了企業(yè)互聯(lián)網(wǎng)開發(fā)及運(yùn)維的一些實(shí)踐,深入剖析了互聯(lián)網(wǎng)項(xiàng)目開發(fā)及上線過程中的各種痛點(diǎn)及解決之道。一個(gè)互聯(lián)網(wǎng)項(xiàng)目的上線并不是那么容易,需要經(jīng)過很多的環(huán)...

    Alan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<