[學習筆記]使用Docker+Jenkin自動化流水線發布.Net應用
使用Docker容器方案可以快速安全地將項目部署到客戶的伺服器上,作為公司項目,需要解決兩個問題: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埠以便外部環境可以訪問
在同網段下的瀏覽器中輸入 //192.168.31.69:8081, 將跳轉至管理頁面
選擇Anonymous匿名登陸,輸入192.168.31.69:5000,點擊Submit
可以看到soasampleauthorizedservicehost:latest已經存在於倉庫內了
配置Jenkins
首先配置Jenkins的shell腳本許可權
在文件末尾添加規則,這樣執行sudo命令時將跳過root管理員密碼驗證
重啟jenkins
在同網段下的瀏覽器打開//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項目下選擇「立即構建」
等待構建成功
再次打開 //192.168.31.69:8081, 打開Docker倉庫管理頁面,可以發現發布時間已更新
至此部署工作結束。
在客戶機上需要安裝Docker並且配置好IP地址,當然CI/CD伺服器需要映射到一個公網IP地址上,以便客戶的伺服器拉取鏡像











