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项目部署方案
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/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...
摘要:本文介绍了企业互联网开发及运维的一些实践,深入剖析了互联网项目开发及上线过程中的各种痛点及解决之道。线上出错,我们通过收集服务器端应用性能数据的方式,实时展示应用的调用拓扑图,并根据出现异常的请求,进行下钻,定位出具体出现问题的代码。 本文介绍了企业互联网开发及运维的一些实践,深入剖析了互联网项目开发及上线过程中的各种痛点及解决之道。一个互联网项目的上线并不是那么容易,需要经过很多的环...
阅读 663·2023-04-26 02:03
阅读 1036·2021-11-23 09:51
阅读 1110·2021-10-14 09:42
阅读 1737·2021-09-13 10:23
阅读 926·2021-08-27 13:12
阅读 838·2019-08-30 11:21
阅读 1000·2019-08-30 11:14
阅读 1041·2019-08-30 11:09