1. 需要搭建一個私有的Docker倉庫,以便安全的儲存映象
2. 需要一套自動化釋出方案,實現程式碼到應用部署的自動化流程
大致流程如下
在java世界中有很多文章介紹了Docker+Jenkin的自動化部署方式,這次來看看如何用這一套工具實現.Net 應用的釋出。
編寫DockerFile
以Soa專案為例
Soa/sample/MainHost/Soa.GatewaySample.Web.Host/Dockerfile
搭建CI/CD伺服器
CI/CD伺服器用於將程式碼端到倉庫的自動化釋出,假設你已經擁有一臺CentOS 7的伺服器,IP地址為192.168.31.69,並且已經安裝好了Docker和Jenkins。
安裝私有倉庫
設定啟動方式為後臺任務,埠為5000,並設定隨docker服務一同啟動
更改docker.service
在ExecStart命令後面新增引數,新增本機IP地址到registry中
重啟docker服務
[可選]安裝並執行whalerator,whalerator是一個docker映象倉庫視覺化工具,可以提供類似Docker Hub的方式瀏覽映象
測試
下載從dockerhub上下載一個倉庫,再將他提交到私有倉庫中
防火牆開啟8081與8082埠以便外部環境可以訪問
在同網段下的瀏覽器中輸入 http://192.168.31.69:8081, 將跳轉至管理頁面
選擇Anonymous匿名登陸,輸入192.168.31.69:5000,點選Submit
可以看到soasampleauthorizedservicehost:latest已經存在於倉庫內了
配置Jenkins
首先配置Jenkins的shell指令碼許可權
在檔案末尾新增規則,這樣執行sudo命令時將跳過root管理員密碼驗證
重啟jenkins
在同網段下的瀏覽器開啟http://192.168.31.69:8080, 開啟Jenkins管理介面
Dashboard - 新建任務,選擇“構建一個自由風格的軟體專案”
這裡暫且命名為test
在原始碼管理中填寫Git倉庫地址,並且填寫正確的鑑權資訊
在構建中新增一個“執行 shell” 步驟
在命令中輸入以下內容
這些命令將在構建時,在原始碼拉取後執行
- 將指定 ./sample/MainHost/Soa.GatewaySample.Web.Host/Dockerfile構建映象,並命名為192.168.31.69:5000/soasampleauthorizedservicehost
- 將192.168.31.69:5000/soasampleauthorizedservicehost映象推送至私有docker倉庫
至此搭建CI/CD伺服器工作結束。
測試和釋出
返回Dashboard,在test專案下選擇“立即構建”
等待構建成功
再次開啟 http://192.168.31.69:8081, 開啟Docker倉庫管理頁面,可以發現釋出時間已更新
至此部署工作結束。
在客戶機上需要安裝Docker並且配置好IP地址,當然CI/CD伺服器需要對映到一個公網IP地址上,以便客戶的伺服器拉取映象