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=restartedCI 第三方服務(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
摘要:基于的私有云混合云構(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是一...
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...
一、什么是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...
摘要:年開發(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...
摘要:本文介紹了企業(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)...
閱讀 678·2023-04-26 02:03
閱讀 1045·2021-11-23 09:51
閱讀 1159·2021-10-14 09:42
閱讀 1750·2021-09-13 10:23
閱讀 974·2021-08-27 13:12
閱讀 851·2019-08-30 11:21
閱讀 1010·2019-08-30 11:14
閱讀 1053·2019-08-30 11:09