天天看點

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. 申請賬号,過程略。
  2. 管理面闆 添加我們的主機
docker學習系列8 實作持續內建
image.png
  1. 檢視主機上運作的 docker相關的資訊

    在主機上我們得敲 docker info, docker inspect 等。這裡直覺的多。

docker學習系列8 實作持續內建
  1. 添加應用
docker學習系列8 實作持續內建
  1. 添加項目,需要綁定 github 或 coding代碼源

    代碼源就是上節的express項目,倉庫位址是:

    https://coding.net/u/finley/p/docker-express-demo

    裡面有Dockerfile。我們讓daocloud幫忙建構,并且釋出到主機上面。

docker學習系列8 實作持續內建

在流程定義中建構階段後面添加釋出階段,選擇釋出到自有主機

docker學習系列8 實作持續內建

這個過程就是push代碼之後,daocloud要根據Dockerfile去建構鏡像,建構之前可以要運作測試腳本,建構成功之後可能要發送提醒。

預設是圖形化的配置,也可以切換到yaml形式,編寫流程定義 daocloud.yml 檔案。

這裡有個細節,如果你切換到了yaml格式,内容為空。push代碼不會觸發自動建構的。

稍微吐槽下daocloud做的不夠人性化,流程定義沒有幫助提示。比如比對分支,滿足條件那塊,我不知道能填哪些,你弄個問号,滑鼠指上去顯示幾行描述也好啊

docker學習系列8 實作持續內建
  1. 這樣就實作了,每當本地push代碼到倉庫,daocloud會重新建構鏡像然後釋出到主機。
docker學習系列8 實作持續內建

有很多細節沒有講到,請自行檢視提供的文檔。

參考:

http://guide.daocloud.io/dcs/ci-9863687.html https://github.com/Ye-Ting/docker-ci/blob/master/daocloud.md
上一篇: 了解 php.ini

繼續閱讀