上一節我們建構了一個Node鏡像。
這裡我有一台已經安裝了docker的Linux主機,比如 IP 是154.8.100.124。
我隻需在主機上執行
docker run -d -p 3000:3000 finleyma/express
,就會部署并運作項目
然後浏覽器中輸入154.8.100.100:3000 就可以通路了。
這裡牽涉到兩個問題:
- 每次修改了項目代碼需要重新建構新的鏡像,然後push到倉庫。
- 每次還得登入伺服器從倉庫拉最新的鏡像重新運作 ,這樣才能反映出變化。
持續內建就能幫我們做到自動化。
不過有幾個條件:
- 需要一個提供持續內建服務的平台,這裡我使用國内的 daocloud 他可以接入我們的主機,提供線上 web 的方式管理運作在主機上面的容器。
- 需要一台能通路的且安裝了docker的主機(最好是Linux)。
- 代碼要部署到 github,coding 等 daocloud 支援的代碼托管商。
下面介紹下流程:
去daocloud綁定倉庫,和主機
根據倉庫建構鏡像
配置
- 去 申請賬号,過程略。
- 管理面闆 添加我們的主機
image.png
-
檢視主機上運作的 docker相關的資訊
在主機上我們得敲 docker info, docker inspect 等。這裡直覺的多。
- 添加應用
-
添加項目,需要綁定 github 或 coding代碼源
代碼源就是上節的express項目,倉庫位址是:
https://coding.net/u/finley/p/docker-express-demo。
裡面有Dockerfile。我們讓daocloud幫忙建構,并且釋出到主機上面。
在流程定義中建構階段後面添加釋出階段,選擇釋出到自有主機
這個過程就是push代碼之後,daocloud要根據Dockerfile去建構鏡像,建構之前可以要運作測試腳本,建構成功之後可能要發送提醒。
預設是圖形化的配置,也可以切換到yaml形式,編寫流程定義 daocloud.yml 檔案。
這裡有個細節,如果你切換到了yaml格式,内容為空。push代碼不會觸發自動建構的。
稍微吐槽下daocloud做的不夠人性化,流程定義沒有幫助提示。比如比對分支,滿足條件那塊,我不知道能填哪些,你弄個問号,滑鼠指上去顯示幾行描述也好啊
- 這樣就實作了,每當本地push代碼到倉庫,daocloud會重新建構鏡像然後釋出到主機。
有很多細節沒有講到,請自行檢視提供的文檔。
參考:
http://guide.daocloud.io/dcs/ci-9863687.html https://github.com/Ye-Ting/docker-ci/blob/master/daocloud.md