Centos 從安裝到部署之 自動化構建及部署(三)

yvanwangl發表於2018-02-12

本篇是 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 專案倉庫。選擇 專案 —> 建立新專案,

Centos 從安裝到部署之 自動化構建及部署(三)

建立專案完成後,我們登入 Github,選擇我們在 Daocloud 中選中配置的專案,切換到 Settings —> Webhooks

Centos 從安裝到部署之 自動化構建及部署(三)

在選單下可以看到一個 hook 配置。有了這個鉤子配置,每次在我們提交程式碼之後,Github 就會向 Daocloud 傳送一個 POST 請求,傳送專案推送資訊,Daocloud 接受到通知後就會自動執行映象構建流程。

三、拉取映象,執行容器

映象構建完成後,設定 Daocloud 中的叢集管理,配置我們的自有主機,拉取映象並執行。選擇 自有主機 —> 叢集管理 —> 新增應用雲平臺

Centos 從安裝到部署之 自動化構建及部署(三)

執行完成後選擇 應用—>建立應用—>選擇我們設定的專案 即可手動進行映象部署。

Centos 從安裝到部署之 自動化構建及部署(三)

至此,當我們的專案提交程式碼後, Daocloud 就會自動執行映象構建,然後我們就可以部署映象到我們的雲主機,但是映象部署這一步仍然需要我們手動執行。

萬里長征就差最後一步,設定自動部署。選擇 應用 —>我們建立的應用(點選應用名稱)—>釋出 將自動釋出功能開啟。

Centos 從安裝到部署之 自動化構建及部署(三)

經過以上三步,我們就可以實現專案的自動構建和部署了。

本文旨在為大家提供一種使用 Docker 實現應用自動構建及部署的方法,如有不正確的地方,大家可以留言指出,共同學習,共同進步。


本篇文章首發於我的個人部落格:Centos 從安裝到部署之 自動化構建及部署(三)


歡迎大家加入前端學習交流群 { 前端學習之同道中人 } :713117335


參考專案:

recatch


參考資料:

Docker — 從入門到實踐

Docker 五大優勢 — 持續整合、版本控制、可移植性、隔離性和安全性


相關文章