container-as-a-service-0x02 -- 項目構建&部署之道
分析By 蘇依蜀黍 . 2016.06.08
之前寫了兩篇,算是比較完善的稱述了就目前的業務,容器服務在我司的應用,但是沒有比較具體的講如何構建以及部署,所以這一篇主要講如何對項目進行容器化以及如何部署,對我司業務分類以后可以有以下幾種類型:
python應用
node.js應用
php應用
nginx服務
docker服務(server)
進一步分大類就只有兩種:
應用
服務
至于項目代碼,大概是有兩到三個代碼倉:
coding
github
gitlab(私有庫)
構建 配置參考項目內添加一個Dockerfile在根目錄即可,如下是php-nginx的配置
#++++++++++++++++++++++++++++++++++++++ # Ubuntu 14.04 PHP-Nginx Docker container #++++++++++++++++++++++++++++++++++++++ FROM webdevops/php:ubuntu-14.04 MAINTAINER info@webdevops.io 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"]鏡像的第三方構建服務(我司在用&以及支持的代碼倉)
阿里云容器服務自動構建
github
bitbucket
local
aliyun code
Daocloud自動構建
github
bitbucket
coding
gitlab(付費&企業版功能)
鏡像的私有構建方案gitlab-runner
jenkins
local push
#通過webhook實現
不論第三方服務還是私有構建都是做了三件事:
# 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等),其實在啟動鏡像的時候,我們就已經在選擇鏡像了
“nginx”就是鏡像,這個鏡像可以來自docker-hub也可以來自私有Registry
混合方案有兩個比較有名的工具,python的用戶應該聽說過fabric,有興趣的可以看下面的參考鏈接;另一個是ansible,同樣也在下面的參考鏈接里。這里要說的是ansible強大的遠程管理功能:
批量在遠程服務器執行命令
可選在那些機器上執行
可選每次執行的數量
強大的playbook
可定義任務隊列以及根據不同的情況決定如何執行
可重復(執行過的不再執行)
more
更多請參考ansible文檔
好像偏題了,那么這樣說,用ansible我們可以至少可以做兩件事:
構建docker鏡像(根據情況選擇海外或者國內)
手動部署&更新代碼 or 更新 容器 或者 容器內的代碼
有這兩項功能,能做的事情,就比較多了,示例如下:
--- - 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 第三方服務的持續集成
Daocloud支持持續集成
阿里云在容器服務控制臺可以配置
私有構建方案的持續集成這里就更明確了,即在playbook執行完以后,通過rancher的api去更新容器或者服務,這里可參考文檔rancher文檔。
參考dockerizing-your-frontend-project
dockerizing-a-node-js-web-app
python-fabric
ansible documents
rancher api documents
基于Docker & Fabric的Web項目部署方案
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26618.html
摘要:基于的私有云混合云構建方案蘇依蜀黍是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的可移植的自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括虛擬機集群和其他的基礎應用平臺。 container-as-a-service-0x01 -- 基于Docker的私有云&混合云構建方案 By 蘇依蜀黍 . 2016.06.07 what Docker是一...
container-as-a-service-0x00 -- 基于Docker的私有云&混合云搭建需求 preface 使用docker對node以及php等程序進行打包以實現快速分發部署上線后,隨之而來的需求是: 統一更大規模的服務器集群為資源池,即不再區分具體的服務器,而是將所有的服務器資源歸為一個資源池,根據需要,隨時創建移除資源,以應對更大數量的資源請求以及,減少資源浪費。故而,我們使用n...
一、什么是CI/CDCI 持續集成CD 持續交付CI/CD就是在開發階段,通過自動化發布,來頻繁部署應用的一種方式二、為什么要配置CI/CD想象一下,一個項目的發布如果手動部署,需要的操作有:單元測試打包文件上傳服務器等等如果每個過程都需要手動執行,每次都要保證不出錯,這個已經很繁瑣了。而現在大的前端項目多達10+的人開發,而且人員流動大。如果每個人都這么發布,快速迭代就容易出錯。這時候就需要CI...
摘要:年開發者應該熟練使用,并且知道版本更新內容。對開發和運維人員來說,最希望的就是一次性創建或配置,可以在任意地方正常運行。是標準規范,是開發的實踐標準。對開發者來說語言推薦和,全棧的選擇非常多,推薦熱門的 前言 在前天(2018-08-02)已經發布了PHP 7.3.0.beta1 Released 如果你還沒有使用 PHP7 ,那真的很遺憾。2018年PHP開發者應該熟練使用 PHP7...
摘要:本文介紹了企業互聯網開發及運維的一些實踐,深入剖析了互聯網項目開發及上線過程中的各種痛點及解決之道。線上出錯,我們通過收集服務器端應用性能數據的方式,實時展示應用的調用拓撲圖,并根據出現異常的請求,進行下鉆,定位出具體出現問題的代碼。 本文介紹了企業互聯網開發及運維的一些實踐,深入剖析了互聯網項目開發及上線過程中的各種痛點及解決之道。一個互聯網項目的上線并不是那么容易,需要經過很多的環...
閱讀 667·2023-04-26 02:03
閱讀 1039·2021-11-23 09:51
閱讀 1120·2021-10-14 09:42
閱讀 1742·2021-09-13 10:23
閱讀 932·2021-08-27 13:12
閱讀 845·2019-08-30 11:21
閱讀 1004·2019-08-30 11:14
閱讀 1048·2019-08-30 11:09