Centos 从安装到部署之 自动化构建及部署(三)

本篇是 Centos 从安装到部署 系列文章的最后一篇。最近忙于其他事情,本该早就完成的终结篇拖了好久。

在 《Centos 从安装到部署之 Docker》中简单的讲解了一些 Docker 的基础知识,主要就是为本篇文章做一个前置铺垫。接下来将会为大家介绍如何通过借助 Daocloud 实现 Docker 镜像的自动构建及部署。

使用 Docker 进行应用部署的优势:

  1. 使用不同版本的镜像部署容器,轻松实现应用版本管理及控制,且方便移植
  2. 可以同时部署多个容器,实现单机集群化部署
  3. 依托第三方平台,轻松实现应用的持续集成、自动构建及部署
  4. 应用之间彼此隔离,降低环境维护成本,提高安全性

要实现的目标:

  1. 本地编写业务代码,无需构建
  2. 推送代码到 Github 仓库
  3. Daocloud 拉取最新代码进行镜像构建
  4. 构建完成自动部署镜像到指定服务器

Talk is cheap, show me step!

一、编写 Dockerfile 文件

上一篇 中,我们了解到 Dockerfile 文件是构建 docker 镜像的 “指南”,Docker Daemon 会根据项目上下文中的 Dockerfile 文件中的指令将项目打包构建为一个镜像,所以编写 Dockerfile 文件是第一步。

首先我们在项目根目录下创建一个 Dockerfile 文件(本文的构建过程以我的个人项目 recatch 为例),然后在其中写入如下代码:

# 指定当前镜像的基础镜像为 node,版本为 8.9.1
FROM node:8.9.1

# 指定当前镜像维护人信息
MAINTAINER yvanwang googolewang@gmail.com

# 此处将项目根目录下的 package*.json 拷贝到 /tmp/文件夹下
COPY package*.json /tmp/

# 运行命令行指令切换执行上下文到 /tmp 下,并执行 npm install 命令进行第三方依赖包的安装。
# 之所以要在 /tmp/ 目录下安装 npm 包,是为了可以充分利用 docker 镜像层的缓存,
# 防止每次构建镜像都需要重新安装
RUN cd /tmp && npm install

# 运行命令创建 /usr/src/recatch 文件夹
RUN mkdir -p /usr/src/recatch

# 指定工作目录为 /usr/src/recatch
WORKDIR /usr/src/recatch

# 将项目根目录下的内容拷贝到镜像的 /usr/src/recatch 目录下
COPY . .

# 运行命令将安装的 npm 包 拷贝到/usr/src/recatch 目录下,并执行项目构建
RUN cp -a /tmp/node_modules /usr/src/recatch && npm run build

# 运行命令安装 pm2,我们将使用 pm2 来守护我们的 node 进程
RUN npm install pm2 -g

# 声明容器运行端口
EXPOSE 8084

# 容器启动命令,将会执行 package.json 中的 start:docker 脚本
CMD ["npm", "run", "start:docker"]复制代码

对配置指令进行简单介绍:

FROM:指定基础镜像,我们的镜像就是基于该基础镜像进行定制,所以在 Dockerfile 中 FROM 指令是必需的,而且必须是第一条指令

MAINTAINER:镜像维护人信息

COPY:复制文件,格式为:COPY <源路径> <目标路径>

RUN:是用来执行命令行命令的

WORKDIR:指定工作目录,格式为: WORKDIR <工作目录路径>

EXPOSE: 声明运行时容器提供服务端口,只是一个声明,容器运行端口以启动容器时的配置为主

CMD: 容器启动命令,用于指定容器启动时需要运行的启动命令

详细具体的 Dockerfile 指令参考 《Docker — 从入门到实践》

二、配置 Daocloud 设置 Github 项目

需要前往 Daocloud 注册一个管理账户,可以使用 Github 账户登录。

登录完成后,配置 Github 项目仓库。选择 项目 —> 创建新项目,

创建项目完成后,我们登录 Github,选择我们在 Daocloud 中选中配置的项目,切换到 Settings —> Webhooks

在菜单下可以看到一个 hook 配置。有了这个钩子配置,每次在我们提交代码之后,Github 就会向 Daocloud 发送一个 POST 请求,发送项目推送信息,Daocloud 接受到通知后就会自动执行镜像构建流程。

三、拉取镜像,运行容器

镜像构建完成后,设置 Daocloud 中的集群管理,配置我们的自有主机,拉取镜像并运行。选择 自有主机 —> 集群管理 —> 添加应用云平台

执行完成后选择 应用—>创建应用—>选择我们设置的项目 即可手动进行镜像部署。

至此,当我们的项目提交代码后, Daocloud 就会自动执行镜像构建,然后我们就可以部署镜像到我们的云主机,但是镜像部署这一步仍然需要我们手动执行。

万里长征就差最后一步,设置自动部署。选择 应用 —>我们创建的应用(点击应用名称)—>发布 将自动发布功能打开。

经过以上三步,我们就可以实现项目的自动构建和部署了。

本文旨在为大家提供一种使用 Docker 实现应用自动构建及部署的方法,如有不正确的地方,大家可以留言指出,共同学习,共同进步。


本篇文章首发于我的个人博客:Centos 从安装到部署之 自动化构建及部署(三)


欢迎大家加入前端学习交流群 { 前端学习之同道中人 } :713117335


参考项目:

recatch


参考资料:

Docker — 从入门到实践

Docker 五大优势 — 持续集成、版本控制、可移植性、隔离性和安全性


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值