Asp.net Core Jenkins Docker 实现一键化部署
寫(xiě)在前面
在前段時(shí)間嘗試過(guò)用Jenkins來(lái)進(jìn)行asp.net core 程序在IIS上面的自動(dòng)部署。大概的流程是Jenkins從git上獲取代碼
最開(kāi)始Jenkins是放在Ubuntu的Docker中,但是由于Powershell執(zhí)行的原因,就把Jenkins搬到了windows上。因?yàn)槲覀兙W(wǎng)站的部署需要停掉IIS站點(diǎn),所以需要Powershell來(lái)遠(yuǎn)程操作服務(wù)器(上傳文件,停止站點(diǎn),啟動(dòng)站點(diǎn)),也很順利的利用WinRM+Powershell腳本實(shí)現(xiàn)了上面的功能,但是最后在實(shí)際使用中發(fā)現(xiàn),腳本停止站點(diǎn)偶爾會(huì)有是假狀態(tài),進(jìn)行Copy文件還總是會(huì)因?yàn)檎加枚?#xff0c;所以還是只能手動(dòng)去停止站點(diǎn),這樣就沒(méi)有達(dá)到一鍵化的目的,所以就有了用Docker來(lái)鏡像。
Docker Image
.net core對(duì)Docker是大力支持了,在Core之前,我就特別羨慕我在Docker中使用一些工具的體驗(yàn)--一行指令就可以工具自動(dòng)安全完整了,不用費(fèi)力進(jìn)行環(huán)境配置,而且對(duì)系統(tǒng)的入侵特別少。所以Core出來(lái)之后,我就一直會(huì)嘗試在Docker中運(yùn)行Core程序 但是一直沒(méi)敢上正式環(huán)境,正好現(xiàn)在遇到自動(dòng)化部署的問(wèn)題,就打算先從測(cè)試環(huán)境開(kāi)始,把Docker環(huán)境一步步的能應(yīng)用到正式環(huán)境上。大概的流程是這樣的:
Jenkins安裝
Docker安裝Jenkins可以直接到store.docker.com上搜索Jenkins的鏡像然后run容器就行了唯一要注意的是要讓容器中的Jenkins共用宿主機(jī)的Docker環(huán)境,命令如下
docker run --memory 1.5G ?--name ContainerName -p 18181:8080 -p 50000:50000 -u root -d --env JAVA_OPTS="-Xms256m -Xmx512m ?-XX:MaxNewSize=256m" ?-v /var/run/docker.sock:/var/run/docker.sock ?-v /usr/bin/docker:/usr/bin/docker ?-v /home/buxiaoxia/software/jenkins:/var/jenkins_home -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 jenkins/jenkins:lts后面的-v是用來(lái)指定宿主機(jī)的文件/文件夾掛載到宿主機(jī)的指定路徑上面,這里主要是用來(lái)掛載宿主機(jī)的Docker環(huán)境。當(dāng)容器啟動(dòng)完成之后,我們可以用命令
docker exec -it containerid /bin/bash進(jìn)入容器中,執(zhí)行docker ps的命令試試是否能執(zhí)行成功。
Jenkins Job
當(dāng)容器運(yùn)行好之后,進(jìn)行一些初始化的工作之后,我們就可以開(kāi)始建立的部署Job了
源代碼管理中配置我們Git的地址
然后就是構(gòu)建命令直接用執(zhí)行Shell
這里就是在構(gòu)建我們的Image了
然后接下來(lái)就是推送當(dāng)前構(gòu)建的Image到遠(yuǎn)程倉(cāng)庫(kù),再在構(gòu)建后去執(zhí)行遠(yuǎn)程連接到需要發(fā)布的服務(wù)器根據(jù)版本號(hào)獲取到需要部署的鏡像進(jìn)行run就行,因?yàn)槲耶?dāng)前都在測(cè)試環(huán)境 所以就直接在本地執(zhí)行鏡像的run了。
這樣就基本實(shí)現(xiàn)了一鍵化部署了,當(dāng)然還是有很多需要優(yōu)化的地方,接下來(lái)我在使用的過(guò)程中如果遇到用著不順的或者是你們有不順的地方我們?cè)趤?lái)解決下。
寫(xiě)在最后
DockerFile
最開(kāi)始構(gòu)建asp.net core 2.1版本的鏡像的時(shí)候,運(yùn)行總是會(huì)找不到dotnet sdk,最后就只有在DockerFile中添加了一層 文件內(nèi)容如下
這種方式有個(gè)問(wèn)題就是會(huì)有一些無(wú)用的images 分享的指令來(lái)進(jìn)行清除
原文地址:??https://www.cnblogs.com/rstar/p/9983438.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的Asp.net Core Jenkins Docker 实现一键化部署的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: .Net Core微服务系列--理论篇
- 下一篇: 【话题揭秘】某大型国有银行的敏捷落地实践