上一節(jié)我們構(gòu)建了一個(gè)Node鏡像。
這里我有一臺(tái)已經(jīng)安裝了docker的Linux主機(jī),比如 IP 是154.8.100.124钻蹬。
我只需在主機(jī)上執(zhí)行 docker run -d -p 3000:3000 finleyma/express
酷师,就會(huì)部署并運(yùn)行項(xiàng)目
然后瀏覽器中輸入154.8.100.100:3000 就可以訪問了。
這里牽涉到兩個(gè)問題:
- 每次修改了項(xiàng)目代碼需要重新構(gòu)建新的鏡像惜浅,然后push到倉庫瘫辩。
- 每次還得登錄服務(wù)器從倉庫拉最新的鏡像重新運(yùn)行 ,這樣才能反映出變化坛悉。
持續(xù)集成就能幫我們做到自動(dòng)化伐厌。
不過有幾個(gè)條件:
- 需要一個(gè)提供持續(xù)集成服務(wù)的平臺(tái),這里我使用國內(nèi)的 daocloud
他可以接入我們的主機(jī)裸影,提供在線 web 的方式管理運(yùn)行在主機(jī)上面的容器挣轨。 - 需要一臺(tái)能訪問的且安裝了docker的主機(jī)(最好是Linux)。
- 代碼要部署到 github轩猩,coding 等 daocloud 支持的代碼托管商卷扮。
下面介紹下流程:
去daocloud綁定倉庫,和主機(jī)
根據(jù)倉庫構(gòu)建鏡像
配置
image.png
- 查看主機(jī)上運(yùn)行的 docker相關(guān)的信息
在主機(jī)上我們得敲 docker info, docker inspect 等。這里直觀的多浊猾。
image.png
- 添加應(yīng)用
image.png
- 添加項(xiàng)目抖甘,需要綁定 github 或 coding代碼源
代碼源就是上節(jié)的express項(xiàng)目,倉庫地址是:https://coding.net/u/finley/p/docker-express-demo葫慎。
里面有Dockerfile衔彻。我們讓daocloud幫忙構(gòu)建,并且發(fā)布到主機(jī)上面偷办。
image.png
在流程定義中構(gòu)建階段后面添加發(fā)布階段艰额,選擇發(fā)布到自有主機(jī)
image.png
這個(gè)過程就是push代碼之后,daocloud要根據(jù)Dockerfile去構(gòu)建鏡像椒涯,構(gòu)建之前可以要運(yùn)行測試腳本柄沮,構(gòu)建成功之后可能要發(fā)送提醒。
默認(rèn)是圖形化的配置,也可以切換到y(tǒng)aml形式祖搓,編寫流程定義 daocloud.yml 文件狱意。
這里有個(gè)細(xì)節(jié),如果你切換到了yaml格式拯欧,內(nèi)容為空详囤。push代碼不會(huì)觸發(fā)自動(dòng)構(gòu)建的。
稍微吐槽下daocloud做的不夠人性化镐作,流程定義沒有幫助提示藏姐。比如匹配分支,滿足條件那塊该贾,我不知道能填哪些羔杨,你弄個(gè)問號(hào),鼠標(biāo)指上去顯示幾行描述也好啊
image.png
- 這樣就實(shí)現(xiàn)了靶庙,每當(dāng)本地push代碼到倉庫问畅,daocloud會(huì)重新構(gòu)建鏡像然后發(fā)布到主機(jī)娃属。
image.png
有很多細(xì)節(jié)沒有講到六荒,請(qǐng)自行查看提供的文檔。
參考:
http://guide.daocloud.io/dcs/ci-9863687.html
https://github.com/Ye-Ting/docker-ci/blob/master/daocloud.md