日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

使用Jenkins来发布和代理.NetCore项目

發(fā)布時(shí)間:2023/12/4 asp.net 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Jenkins来发布和代理.NetCore项目 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Back to

Study!

注:書(shū)接上文,上回《【CI/CD系列】使用Docker安裝Jenkins》咱們說(shuō)到了使用Docker鏡像的方式,來(lái)建立Jenkins服務(wù),用來(lái)持續(xù)集成和持續(xù)發(fā)布項(xiàng)目,但是上一篇文章有兩個(gè)問(wèn)題:

01

創(chuàng)建的容器不能操作和使用宿主機(jī)的docker,導(dǎo)致我們無(wú)法在Jenkins服務(wù)中去使用docker命令去構(gòu)建asp.netcore項(xiàng)目鏡像。

02

文章只是重點(diǎn)講解了下如何構(gòu)建和配置Jenkins服務(wù)應(yīng)用,那接下來(lái)如何發(fā)布項(xiàng)目和代理項(xiàng)目,沒(méi)有具體說(shuō)明。

所以今天就重點(diǎn)說(shuō)一下這兩點(diǎn),其實(shí)也是很簡(jiǎn)單的,昨天的基本內(nèi)容已經(jīng)三分之二了,今天就是簡(jiǎn)單的補(bǔ)充說(shuō)明一下。

PS最終的鏡像,我已經(jīng)推送到dockerHub上了,可以自行pull下來(lái),然后按照下文的命令執(zhí)行下即可。

當(dāng)然相關(guān)的視頻版我會(huì)接下來(lái)的兩周,配合著我的六個(gè)項(xiàng)目遷移的時(shí)候進(jìn)一步講解,現(xiàn)在我已經(jīng)在生產(chǎn)環(huán)境構(gòu)建好了,域名就是:

http://jenkins.neters.club

下一步就是把項(xiàng)目遷移了,這樣就能省很多時(shí)間,甚至就不需要登錄服務(wù)器操作了。

1、生成新容器

同時(shí)支持 SDK 和 Docker 的容器實(shí)例

還是昨天的鏡像文件,只不過(guò)這次啟動(dòng)容器實(shí)例的命令不一樣了,用這個(gè):

docker run -u root --rm -d -p 3001:8080 --name jenkins2 \ -v /usr/bin/docker:/usr/bin/docker \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /home/dockerVolumes2/jenkins_home:/var/jenkins_home \ laozhangisphi/dnt-docker-jenkins

第一行表示啟動(dòng)一個(gè)容器名為Jenkins2的對(duì)外開(kāi)放3001端口實(shí)例。

第二行表示將宿主機(jī)上面的docker命令行工具掛載到容器中,使jenkins用戶(hù)能夠執(zhí)行docker命令。

第三行表示將宿主機(jī)上的docker.sock掛載到容器中的相應(yīng)位置,使得容器中的dockercli能跟宿主機(jī)的docker通信。

第四行表示掛載我們創(chuàng)建的配置文件存放目錄到指定的文件夾。

啟動(dòng)好了以后,就可以瀏覽器里正常的訪(fǎng)問(wèn){ip}:3001端口了,接下來(lái)就是和上篇文章里說(shuō)的一樣,無(wú)腦配置一波就行了。

配置的過(guò)程中,如果插件有安裝失敗的,不用擔(dān)心,只要能繼續(xù)我往下走,就沒(méi)事,因?yàn)楹笈_(tái)管理里,我們可以繼續(xù)安裝的:

這個(gè)時(shí)候我們可以進(jìn)入到容器里,執(zhí)行命令,可以看到該有的命令都有了:

如果僅僅是查看Jenkins密碼,不用進(jìn)入也可以,直接一句話(huà)即可

docker exec jenkins2 cat /var/jenkins_home/secrets/initialAdminPassword


是不是很方便。


2、構(gòu)建項(xiàng)目

創(chuàng)建一個(gè)Jenkins工程,使用CLI構(gòu)建netcore應(yīng)用

01、首先還是需要一個(gè)實(shí)例項(xiàng)目

在上篇文章中,我們創(chuàng)建了一個(gè)空的webapi項(xiàng)目,現(xiàn)在要?jiǎng)?chuàng)建Docker項(xiàng)目了,肯定就需要一個(gè)Dockerfile文件了:

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base WORKDIR /app EXPOSE 80FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build WORKDIR /src COPY ["HelloWorldPrj/HelloWorldPrj.csproj", "HelloWorldPrj/"] RUN dotnet restore "HelloWorldPrj/HelloWorldPrj.csproj" COPY . . WORKDIR "/src/HelloWorldPrj" RUN dotnet build "HelloWorldPrj.csproj" -c Release -o /app/buildFROM build AS publish RUN dotnet publish "HelloWorldPrj.csproj" -c Release -o /app/publishFROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "HelloWorldPrj.dll"]

這個(gè)每個(gè)人肯定都能看懂,因?yàn)槭莢s官方給我們創(chuàng)建的,只不過(guò)要注意一點(diǎn),注意路徑問(wèn)題,要放到項(xiàng)目根目錄,也就是和vs同級(jí)目錄。

02、配置Jenkins工作任務(wù)

基本的和上篇文章一樣,還是一個(gè)自由風(fēng)格的模式,配置Git地址,和構(gòu)建命令。

之所以注釋了,是因?yàn)榈谝淮螛?gòu)建,宿主機(jī)里不存在容器和鏡像,以后每次修改代碼,都是刪掉容器和鏡像,重新生成。

但是,上邊用的Dockerfile是vs官方給我們默認(rèn)創(chuàng)建的,如果是國(guó)內(nèi)的服務(wù)器,構(gòu)建的時(shí)候會(huì)特別慢,那我們就用第二種方案,先發(fā)布再構(gòu)建鏡像,而不是在構(gòu)建鏡像的過(guò)程中發(fā)布,這樣的話(huà)構(gòu)建鏡像的時(shí)候,可以使用國(guó)內(nèi)的一些源鏡像。

首先配置鏡像文件Dockersfile,注意這個(gè)是在最終的publish文件夾里,所以我就右鍵屬性,始終復(fù)制了:

FROM swr.cn-south-1.myhuaweicloud.com/mcr/aspnet:3.1-alpine WORKDIR /app COPY . . EXPOSE 80 ENTRYPOINT ["dotnet", "HelloWorldPrj.dll"]

然后編輯我們的Jenkins的構(gòu)建shell命令:

dotnet?restore dotnet?build cd?HelloWorldPrj dotnet?publish? echo?"Successfully!!!!?^?please?see?the?file?." cd?bin/Debug/netcoreapp3.1/publish/#docker stop helloworldcontainer #docker rm helloworldcontainer #docker?rmi?hello-world-docjek docker build -t hello-world-docjek . docker?run --name helloworldcontainer -p 5055:80 -d hello-world-docjek

03、點(diǎn)擊構(gòu)建,查看結(jié)果

可以看到我們?cè)贘enkins中,構(gòu)建了一個(gè)hello-world-docjek的項(xiàng)目鏡像,然后生成了一個(gè)容器實(shí)例。

因?yàn)槲覀兊腄ocker是宿主機(jī)的,可以在宿主機(jī)查看全部容器:

而且用Jenkins是直接將端口映射到公網(wǎng)的,直接訪(fǎng)問(wèn){ip}:5055,就可以看到效果了,比如我們剛剛測(cè)試的我的http://neters.club:5055/weatherforecast:


04、Nginx做域名匹配和反向代理

剩下的就是很簡(jiǎn)單了,簡(jiǎn)單的在nginx里配置下就行了,將端口映射到域名下,然后配置下跨域的反向代理,整體的開(kāi)發(fā)流程就是這么簡(jiǎn)單。

以后我們每次修改代碼,就可以直接在Jenkins里構(gòu)建一下,然后就能快速的部署了,是不是很方便。

當(dāng)然,最后還有發(fā)郵件推送消息,編輯觸發(fā)器,視圖管理,docker-compose編排或者其他的知識(shí)點(diǎn),等待視頻的時(shí)候再說(shuō)吧。

總結(jié)

以上是生活随笔為你收集整理的使用Jenkins来发布和代理.NetCore项目的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。