最近學(xué)習(xí)了下docker ,聽了一次卷宗團(tuán)隊(duì)王凱同學(xué)關(guān)于gitlab-ci的分享,加上公司有arterydocker這個(gè)平臺(tái)。所以決定嘗試配置一套自動(dòng)集成部署。
下面的內(nèi)容主要分為幾個(gè)部分:
1. 新的流程
2. 關(guān)于gitlab-ci介紹
3. docker的簡單介紹
4. arteryDocker簡單介紹
5. gitlab-ci +arteryDocker具體配置
6. 遇到的問題
如果只是需要了解,請(qǐng)看1,2,3。 如果需要具體嘗試 請(qǐng)看剩下幾條。
1.新的流程
當(dāng)前由于arteryDocker平臺(tái)不支持命令啟動(dòng)更新部署應(yīng)用 所以 暫時(shí)只能支持到 每次提交自動(dòng)生成鏡像 并且自動(dòng)推送到arteryDocker倉庫,需手動(dòng)點(diǎn)擊平臺(tái)上應(yīng)用的重新部署按鈕,從而完成部署。arteryDocker平臺(tái)在7月底版本應(yīng)該會(huì)支持遠(yuǎn)程調(diào)用重新部署啟動(dòng)應(yīng)用。到時(shí)可實(shí)現(xiàn)全部自動(dòng)化。
2.關(guān)于gitlab-ci介紹
3.docker的簡單介紹
推薦書籍:
docker --從入門到實(shí)踐
4.arteryDocker簡單介紹
借ADC上關(guān)于arteryDocker的介紹
ArteryDocker平臺(tái)是以docker為底層核心開發(fā)的一套集部署、管理、調(diào)度、運(yùn)維于一體的系統(tǒng),它實(shí)現(xiàn)了傳統(tǒng)的項(xiàng)目與docker進(jìn)行完美結(jié)合。
優(yōu)勢:
? 封裝
應(yīng)用發(fā)布包包含了所有所需要的環(huán)境
? 高效
容器技術(shù)比虛擬機(jī)更加輕量,資源開銷少,利用率高
? 智能
應(yīng)用占用資源在允許的范圍內(nèi)按需占用,系統(tǒng)能夠及時(shí)有效統(tǒng)治警告,錯(cuò)誤信息
? 安全
所有應(yīng)用與外界網(wǎng)絡(luò)隔離,任何端口都需要進(jìn)行路由的端口映射
我理解的arteryDocker平臺(tái)是將docker很多功能做到可視化,并且增加一些命令的封裝,將用戶的操作盡可能的簡單化。
5. gitlab-ci +arteryDocker具體配置
本文基于 centos7 gitlab 8.8.5 gitlab-ci-runner 1.11.2 docker 17.05.0
流程如下
1. 配置runner服務(wù)器環(huán)境(包含runner,maven,jdk,docker)
2. 書寫dockerfile
3. 配置gitlab-ci.yml
4. arteryDocker平臺(tái)使用
一、 配置runner服務(wù)器環(huán)境(包含runner,maven,jdk,docker)
- 安裝maven,安裝jdk (命令網(wǎng)上一大堆)
- 安裝 runner
- 安裝docker (注意與runner在一臺(tái)服務(wù)器上安裝)
見docker --從入門到實(shí)踐中centos安裝docker章節(jié)。
安裝后 記得 啟動(dòng)docker 服務(wù)
service docker start
還有記得把gitlab-runner這個(gè)用戶 加入docker組中 否則 docker-runner執(zhí)行腳本 關(guān)于操作docker會(huì)報(bào)無權(quán)限。具體操作見第一個(gè)問題解決方案
4 . 整體流程
每次合并后,gitlab-ci找到指定runner 執(zhí)行 .gitlab-ci.yml,gitlab-ci.yml見下圖
runner 調(diào)用maven去打包,將打好的war包和項(xiàng)目中寫好的dockerfile放入同一目錄,然后將調(diào)用docker命令生成鏡像,推送到artery平臺(tái),跟arteryDocker了解后,7月底的版本 arteryDocker會(huì)支持遠(yuǎn)程調(diào)用更換應(yīng)用鏡像、重新部署。
5 . 注意
① . runner執(zhí)行命令時(shí)使用的是gitlab-runner這個(gè)用戶執(zhí)行的,一個(gè)是需要將該用戶加入docker的group,否則執(zhí)行命令報(bào)沒有權(quán)限,第二個(gè)是需要將maven 本地repository的所有者改為gitlab-runner,不這樣mvn操作時(shí)會(huì)報(bào)一堆不讓刪除等等的錯(cuò)誤。
② . 關(guān)于dockerfile的書寫 要注意dockerfiel文件名大小寫的問題
③. 關(guān)于config中的配置 如果沒有使用配置服務(wù),或者獲取時(shí)候沒有從環(huán)境變量中獲取,則要將config.properties放入數(shù)據(jù)卷中,啟動(dòng)時(shí)通過ENTRYPOINT將config文件替換。