<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用Jenkins來發(fā)布和代理.NetCore項目

          共 3341字,需瀏覽 7分鐘

           ·

          2020-08-30 10:02

          Back to
          Study!



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

          01

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

          02

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

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


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


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

          http://jenkins.neters.club

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



          1、生成新容器

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


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

          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


          第一行表示啟動一個容器名為Jenkins2的對外開放3001端口實(shí)例。

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

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

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


          啟動好了以后,就可以瀏覽器里正常的訪問{ip}:3001端口了,接下來就是和上篇文章里說的一樣,無腦配置一波就行了。

          配置的過程中,如果插件有安裝失敗的,不用擔(dān)心,只要能繼續(xù)我往下走,就沒事,因為后臺管理里,我們可以繼續(xù)安裝的:


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

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

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

          是不是很方便。










          2、構(gòu)建項目

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


          01、首先還是需要一個實(shí)例項目

          在上篇文章中,我們創(chuàng)建了一個空的webapi項目,現(xiàn)在要創(chuàng)建Docker項目了,肯定就需要一個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 baseWORKDIR /appEXPOSE 80
          FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS buildWORKDIR /srcCOPY ["HelloWorldPrj/HelloWorldPrj.csproj", "HelloWorldPrj/"]RUN dotnet restore "HelloWorldPrj/HelloWorldPrj.csproj"COPY . .WORKDIR "/src/HelloWorldPrj"RUN dotnet build "HelloWorldPrj.csproj" -c Release -o /app/build
          FROM build AS publishRUN dotnet publish "HelloWorldPrj.csproj" -c Release -o /app/publish
          FROM base AS finalWORKDIR /appCOPY --from=publish /app/publish .ENTRYPOINT ["dotnet", "HelloWorldPrj.dll"]


          這個每個人肯定都能看懂,因為是vs官方給我們創(chuàng)建的,只不過要注意一點(diǎn),注意路徑問題,要放到項目根目錄,也就是和vs同級目錄。



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

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





          之所以注釋了,是因為第一次構(gòu)建,宿主機(jī)里不存在容器和鏡像,以后每次修改代碼,都是刪掉容器和鏡像,重新生成。


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


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

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


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

          dotnet?restoredotnet?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-docjekdocker build -t hello-world-docjek .docker?run --name helloworldcontainer -p 5055:80 -d hello-world-docjek



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

          可以看到我們在Jenkins中,構(gòu)建了一個hello-world-docjek的項目鏡像,然后生成了一個容器實(shí)例。

          因為我們的Docker是宿主機(jī)的,可以在宿主機(jī)查看全部容器:

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





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


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

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


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

          瀏覽 69
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码鸡巴| 俺来也亚洲欧美 | 极品久久久久久久 | 一区二区福利视频 | 久爱无码|