docker学习系列8 实现持续集成

上一节我们构建了一个Node镜像。 这里我有一台已经安装了docker的Linux主机,比如 IP 是154.8.100.124。 我只需在主机上执行 docker run -d -p 3000:3000 finleyma/express,就会部署并运行项目 然后浏览器中输入154.8.100.100:3000 就可以访问了。 这里牵涉到两个问题:

  1. 每次修改了项目代码需要重新构建新的镜像,然后push到仓库。
  2. 每次还得登录服务器从仓库拉最新的镜像重新运行 ,这样才能反映出变化。

持续集成就能帮我们做到自动化。 不过有几个条件:

  1. 需要一个提供持续集成服务的平台,这里我使用国内的 daocloud 他可以接入我们的主机,提供在线 web 的方式管理运行在主机上面的容器。
  2. 需要一台能访问的且安装了docker的主机(最好是Linux)。
  3. 代码要部署到 github,coding 等 daocloud 支持的代码托管商。

下面介绍下流程: 去daocloud绑定仓库,和主机 根据仓库构建镜像 配置

  1. daocloud 申请账号,过程略。
  2. 管理面板 添加我们的主机

image.png

  1. 查看主机上运行的 docker相关的信息 在主机上我们得敲 docker info, docker inspect 等。这里直观的多。

image.png

  1. 添加应用

image.png

  1. 添加项目,需要绑定 github 或 coding代码源 代码源就是上节的express项目,仓库地址是:https://coding.net/u/finley/p/docker-express-demo。 里面有Dockerfile。我们让daocloud帮忙构建,并且发布到主机上面。

image.png

在流程定义中构建阶段后面添加发布阶段,选择发布到自有主机

image.png

这个过程就是push代码之后,daocloud要根据Dockerfile去构建镜像,构建之前可以要运行测试脚本,构建成功之后可能要发送提醒。 默认是图形化的配置,也可以切换到yaml形式,编写流程定义 daocloud.yml 文件。 这里有个细节,如果你切换到了yaml格式,内容为空。push代码不会触发自动构建的。 稍微吐槽下daocloud做的不够人性化,流程定义没有帮助提示。比如匹配分支,满足条件那块,我不知道能填哪些,你弄个问号,鼠标指上去显示几行描述也好啊

image.png

  1. 这样就实现了,每当本地push代码到仓库,daocloud会重新构建镜像然后发布到主机。

image.png

有很多细节没有讲到,请自行查看提供的文档。

参考: http://guide.daocloud.io/dcs/ci-9863687.html https://github.com/Ye-Ting/docker-ci/blob/master/daocloud.md

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏青青天空树

mongodb3 ubuntu离线安装(非apt-get)及用户管理

  目前mongodb已经出到3.x,相对于2.x改动较大,本着学新不学旧的原则来捣鼓nosql数据库。最初想着apt-get安装但是软件源上都是2.x的,遂下...

1621
来自专栏cloudskyme

vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化)

环境准备 软件:vmware workstation 9.0      ubuntu-12.04.2-server-amd64(官方下载) 硬件:确认CPU支持...

3305
来自专栏醒者呆

虚拟化明星——深挖轻量级容器docker

docker是一个轻量级容器,属于操作系统层面的虚拟化技术,封装了文件系统(AUFS)以及网络互联,进程隔离等特性。 传统虚拟化架构: ? docker虚拟化架...

3368
来自专栏建站达人秀

如何搭建 LNMP 网站服务环境

LNMP指的是一个基于CentOS/Debian编写的Nginx、PHP、MySQL一键安装包。可以在VPS、独立主机上轻松的安装LNMP生产环境。LNMP代表...

1.1K9
来自专栏五毛程序员

wamp+thinkphp环境配置

3655
来自专栏农夫安全

精通脚本黑客txt版-第一章

第1章 本地服务器的搭建 1.1 WEB服务器简介 1.2 ASP服务器的搭建 1...

5026
来自专栏社区的朋友们

让木马 DNS 数据传输成为历史:看我怎么让 xshell 病毒失效

笔者提出基于全 web 代理的 dns 恶意传输屏蔽方案,通过禁止终端做 dns 解析,仅允许代理做dns,完全屏蔽 pc 的恶意 dns 传输的同时,保障终端...

4410
来自专栏GA小站

Launch上的Extensions(插件)

Extensions在英文上的意思就是扩展,但实际这个中文意思并不能很好的代表这个功能,我觉得用“插件”这个词会比较合适,后面我所有的介绍都会用插件来表示Ext...

1404
来自专栏美丽应用

Linux Deploy:在Android上部署Linux

9763
来自专栏吴柯的运维笔记

Linux系统下搭建LNMP环境

“每个理性的IT人士都置顶了吴柯的运维笔记” LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构。 Linux是一类Unix计...

5276

扫码关注云+社区

领取腾讯云代金券