<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發(fā)布與部署的實現(xiàn)

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:35:06
        文檔

        Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發(fā)布與部署的實現(xiàn)

        Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發(fā)布與部署的實現(xiàn):前言 Docker一直很火熱,一直想把原本的Jenkins自動部署工具搬到Docker上面,無奈今年一直忙于各種事情,遲遲未實施這個事情,正好迎來了dotnet core 2.0 的正式發(fā)布,升級項目的同時,順便直接將Jenkins搬到Docker上。為什么要寫這篇文章呢?因為找過相
        推薦度:
        導讀Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發(fā)布與部署的實現(xiàn):前言 Docker一直很火熱,一直想把原本的Jenkins自動部署工具搬到Docker上面,無奈今年一直忙于各種事情,遲遲未實施這個事情,正好迎來了dotnet core 2.0 的正式發(fā)布,升級項目的同時,順便直接將Jenkins搬到Docker上。為什么要寫這篇文章呢?因為找過相

        前言

        Docker一直很火熱,一直想把原本的Jenkins自動部署工具搬到Docker上面,無奈今年一直忙于各種事情,遲遲未實施這個事情,正好迎來了dotnet core 2.0 的正式發(fā)布,升級項目的同時,順便直接將Jenkins搬到Docker上。為什么要寫這篇文章呢?因為找過相關(guān)的資料,大多數(shù)文章都是基于Ubuntu 安裝.net core 又或者 GitLab 進行持續(xù)集成 自動部署等等等,并未有人嘗試過Centos7.3 上部署 Jenkins 并且 構(gòu)建 ASP.NET CORE 2.0 的應(yīng)用。當然筆者表示并不知道為什么ubuntu有這么多人青睞。

        接下來,筆者將從本片博文中,粗略的教大家怎么安裝Docker 和 Jenkins 并且使用Visual Studio 2017 新建Demo 并實現(xiàn)自動部署,下面話不多說了,來一起看看詳細的介紹吧。

        環(huán)境準備

        硬件配置: 1核1G 1M帶寬。50G硬盤。

        系統(tǒng)環(huán)境:CentOS 7.3(64位)

        其實用的就是騰訊云

        安裝Docker

        其實安裝Docker的過程,大家可以到Docker官網(wǎng)找到自己相對應(yīng)的安裝文檔進行安裝,Docker區(qū)分CE和EE的兩個版本,具體這兩個版本有什么區(qū)別,大家自行查閱相關(guān)資料,這里不再概述。教程用的是CE那么就找到對應(yīng)的官方文檔進行安裝,以下是教程安裝的步驟

        1.更新一下包吧,多更無害

        # sudo yum -y update

        2.安裝所需的軟件包 (其實這些騰訊云都具備了,只不過怕有些閹割版的系統(tǒng)缺少,所以貼上命令,安裝過的使用該命令不會造成傷害)

        # sudo yum install -y yum-utils \
         device-mapper-persistent-data \
         lvm2

        3.使用穩(wěn)定版的倉庫(當然可以使用最新版或測試版的倉庫,這個需要官方的說明)

        # sudo yum-config-manager \
         --add-repo \
         https://download.docker.com/linux/centos/docker-ce.repo

        4.安裝Docker ce

        # sudo yum install docker-ce

        tips:在生產(chǎn)系統(tǒng)上,您應(yīng)該安裝特定版本的Docker CE,而不是始終使用最新版本。

        5.啟動Docker

        # sudo systemctl start docker

        6.docker通過運行hello-world映像驗證是否正確安裝。

        # docker run hello-world

        如果出現(xiàn)以下的界面,就代表安裝成功

        配置Docker加速器

        此步驟不是必須的,前提是你的環(huán)境有梯子或者網(wǎng)速可以的,那么可以忽略這個步驟。

        $ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s https://mirror.ccs.tencentyun.com

        使用https://mirror.ccs.tencentyun.com這個加速地址的前提是你必須要使用騰訊云,該地址外部無法訪問,只有騰訊云才能使用此鏡像地址。你可以使用DaoCloud加速地址,具體另行查閱相關(guān)資料。

        安裝Jenkins

        首先不直接從Docker Store上直接Pull Jenkins 的 Image 文件,因為待會需要進行dotnet core 的 Docker自動部署,需要對宿主機上的Docker進行直接操作,那么需要掛載 Docker 給 Jenkins Image,所以現(xiàn)在需要自己動手編寫 Dockerfile 構(gòu)建自定義的Jenkins。

        # touch Dockerfile
        # vim Dockerfile

        插入以下內(nèi)容:

        FROM jenkins
        
        USER root
        #清除了基礎(chǔ)鏡像設(shè)置的源,切換成騰訊云的jessie源
        #使用非騰訊云環(huán)境的需要將 tencentyun 改為 aliyun
        RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list \
         && echo "deb http://mirrors.tencentyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list \
         && echo "deb http://mirrors.tencentyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list \
         && echo "deb http://mirrors.tencentyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
        #更新源并安裝缺少的包
        RUN apt-get update && apt-get install -y libltdl7 && apt-get update
        
        ARG dockerGid=999
        
        RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group 
        
        # 安裝 docker-compose 因為等下構(gòu)建環(huán)境的需要
        RUN curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
        
        RUN chmod +x /usr/local/bin/docker-compose

        如果不安裝libltdl7 會導致如下這個問題,原因是jenkins容器內(nèi)部沒有這個包

        docker: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory
        Build step 'Execute shell' marked build as failure

        在Jenkins操作宿主的Docker的時候會出現(xiàn)拒絕訪問的問題,其實就是容器的jenkins用戶沒有權(quán)限訪問容器外的docker命令,所以 RUN命令 需要把Jenkins用戶加入到Docker用戶組

        構(gòu)建Image

        # docker build . -t auto-jenkins

        出現(xiàn)以上 Successfully 內(nèi)容代表安裝Jenkins成功

        在啟動Jenkins時,需要先創(chuàng)建一個Jenkins的配置目錄,并且掛載到docker 里的Jenkins目錄下

        # mkdir -p /var/jenkins_home

        運行 Jenkins

        # docker run --name jenkins -p 8080:8080 -p 50000:50000 \
         -v /var/run/docker.sock:/var/run/docker.sock \
         -v $(which docker):/bin/docker \
         -v /var/jenkins_home :/var/jenkins_home \
         -d auto-jenkins

          第一行:構(gòu)建一個名稱為jenkins的容器 -p 是容器運行開放端口

          第二行 和第三行: -v 是將宿主機的docker文件掛載進容器里

          第四行:建立宿主機的配置目錄,掛載進docker容器里,這樣容器里的Jenkins配置目錄文件就會映射出來

        第五行:使用auto-jenkins Image 并且后臺啟動

        這個時候 run Jenkins 會提示成功

        執(zhí)行 docker ps 命令后,發(fā)現(xiàn)什么都沒有

        執(zhí)行 docker ps -a 命令看看

        執(zhí)行 docker start -a jenkins 讓容器前臺輸出運行信息的方式運行

        不難看出其實 Jenkins 啟動已經(jīng)是可以了,只是權(quán)限問題導致這個錯誤的信息。

        現(xiàn)在需要看一下Jenkins官方的Dockerfile

        知道問題原因,貼上代碼了。

        ##修改 /var/jenkins 文件夾權(quán)限
        # chown -R 1000 /var/jenkins_home

        繼續(xù)執(zhí)行運行Jenkins 代碼

        # docker run --name jenkins -p 8080:8080 -p 50000:50000 \
         -v /var/run/docker.sock:/var/run/docker.sock \
         -v $(which docker):/bin/docker \
         -v /var/jenkins_home:/var/jenkins_home \
         -d auto-jenkins

        這時你會看到悲催的信息

        容器之前已經(jīng)運行過了,所以會有一個容器已經(jīng)存在了。哥來給你搽眼淚。執(zhí)行以下命令,刪除原本 run 出來的容器

        # docker rm -f jenkins

        刪除完容器后,繼續(xù)執(zhí)行運行命令

        # docker run --name jenkins -p 8080:8080 -p 50000:50000 \
         -v /var/run/docker.sock:/var/run/docker.sock \
         -v $(which docker):/bin/docker \
         -v /var/jenkins_home:/var/jenkins_home \
         -d auto-jenkins

        出現(xiàn)一串字符后,執(zhí)行 docker ps 會發(fā)現(xiàn)容器已經(jīng)啟動了,正常了。這個時候是不是可以使用了?別著急,還有很長的路。

        配置Jenkins

        打開瀏覽器輸入地址 your IP:8080 進行訪問,你會開心的看到這個界面,看到這個界面代表你的Jenkins 已經(jīng)安裝成功了,但是需要進行配置,現(xiàn)在就教大家怎么去配置

        首先,進入容器內(nèi)

        # docker exec -it jenkins /bin/bash

        查看/var/jenkins_home/secrets/initialAdminPassword 文件內(nèi)的密碼

        # cat /var/jenkins_home/secrets/initialAdminPassword

        其實不一定要進入容器內(nèi)查看密碼,可以直接在宿主機的環(huán)境下,查看 /var/jenkins//secrets/initialAdminPassword 的內(nèi)容,因為之前筆者已經(jīng)將這個目錄掛載進Docker里面了

        復(fù)制輸出的內(nèi)容,粘貼到Administrator password,輸入 exit 退出容器,此時進行下一步你會看到此界面,點擊 Install suggested plugins

        等待初始化完畢

        到了這一步,自己隨緣去填吧。

        使用VS2017創(chuàng)建一個ASP.NET Core 2.0 Web應(yīng)用程序,并將代碼上傳到git。這里筆者就不演示上傳代碼的過程步驟了。

        為你們準備了一個地址,方便你們完成本教程:http://git.oschina.net/wenalu/MvcTest

        新建一個自由風格的軟件項目,并填名稱 點擊 OK

        填寫源代碼管理

        勾選 Poll SCM 設(shè)置拉取Git 上代碼的間隔,筆者這里是兩分鐘拉取一次

        勾上 Delete workspace before build start 是設(shè)置構(gòu)建前刪除工作區(qū)

        勾上 Abort the build if it's stuck 是設(shè)定構(gòu)建的超時時間,如果構(gòu)建使用的時間超過設(shè)定的時間,那么就認為這次的構(gòu)建是失敗的。筆者這里超時設(shè)置的是10分鐘

        增加一個Execute Shell 腳本,并填寫以下腳本內(nèi)容

        #!/bin/bash
        # 獲取短版本號
        
        GITHASH=`git rev-parse --short HEAD`
        echo ---------------Remove-Orphans------------------
        docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml -p dockercompose4255153253317384266 down --rmi local --remove-orphans
        echo ------------------Config-----------------------
        docker-compose -f ./docker-compose.ci.build.yml -p dockercompose4255153253317384266 config
        echo ------------------Build------------------------
        docker-compose -f ./docker-compose.ci.build.yml -p dockercompose4255153253317384266 up --build
        echo ---------------Publishing...------------------
        docker-compose -f "./docker-compose.yml" -f "./docker-compose.override.yml" -p dockercompose4255153253317384266 up -d --build

        應(yīng)用保存,回到項目界面上。點擊立即構(gòu)建進行部署工作 SUCCESS

        打開瀏覽器,地址輸入 your IP:8088/

        遇到的問題

        其實上面的篇幅為了大家能盡快的實現(xiàn)部署,只是簡要的介紹了途中一些常犯的錯誤。其實在搭建這個CI環(huán)境的時候遇到不止這些問題,比如說一開始的 Dockerfile 內(nèi)容并不像教程中的一樣。一開始是這樣的:

        FROM jenkins
        
        USER root
        #清除了基礎(chǔ)鏡像設(shè)置的源,切換成阿里云的jessie源
        RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list \
         && echo "deb http://mirrors.tencentyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list \
         && echo "deb http://mirrors.tencentyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list \
         && echo "deb http://mirrors.tencentyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
        #更新源并安裝缺少的包
        RUN apt-get update && apt-get install -y libltdl7 && apt-get update
        
        ARG dockerGid=999
        
        RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group 
        
        USER jenkins

        當你如果在網(wǎng)上找到其他教程,教你如何安裝jenkins,而你使用了類似于這個內(nèi)容的Dockerfile,那么會在Jenkins構(gòu)建編譯的時候產(chǎn)生如下兩個錯誤:

        第一:缺少 docker-compose

        出現(xiàn)這個狀況,當然是可以解決的。首先進入容器,然后找到官方的安裝docker-compose文檔進行安裝,jenkins使用的是Linux直接找到對應(yīng)的Linux安裝資料即可。

        第二:權(quán)限問題

        從容器內(nèi)手動安裝 docker-compose 會出現(xiàn)無法安裝的情況,原因是Jenkins 用戶沒有安裝docker-compose 的權(quán)限

        解決上述問題,當然可以切換 root 用戶,但是筆者使用最笨最直接的方式,從構(gòu)建鏡像的時候就直接不使用 jenkins 用戶,所以教程中并沒有最后一句 USER jenkins 。這樣做目的是讓教程步驟更順利

        tips:正式生產(chǎn)環(huán)境不建議直接切換到 root 用戶運行

        運行 Jenkins 命令一開始是這樣的:

        # docker run --name jenkins -p 8080:8080 -p 50000:50000 \
         -v /var/run/docker.sock:/var/run/docker.sock \
         -v $(which docker):/bin/docker \
         -v /var/jenkins:/var/jenkins_home \
         -d auto-jenkins

        這樣會造成構(gòu)建的時候找到一個根本不存在的目錄上

        其實就是第三句 將/var/jenkins 改成 /var/jenkins_home 就解決這個問題了。

        此時此刻,如果你曾經(jīng)遇到過這樣的問題,哥現(xiàn)在已經(jīng)給你擦眼淚了。

        當然這里不僅僅有這些問題的存在,只是有一部分在做這個教程的時候沒有截圖,就不再闡述了。

        寫在最后

        其實筆者曾Google過這些教程,但是一無所獲,發(fā)覺挺多人使用Ubuntu的,就是找不到一個Centos的案例。當然筆者也不知道他們?yōu)槭裁聪矚g使用Ubuntu。這里把實施過程的心得分享給大家,是因為怕很多人跟筆者一樣重滔覆轍,沒有人幫助的日子挺慘的,也就算這么久以來為社區(qū)做些貢獻吧。

        好了,

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發(fā)布與部署的實現(xiàn)

        Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發(fā)布與部署的實現(xiàn):前言 Docker一直很火熱,一直想把原本的Jenkins自動部署工具搬到Docker上面,無奈今年一直忙于各種事情,遲遲未實施這個事情,正好迎來了dotnet core 2.0 的正式發(fā)布,升級項目的同時,順便直接將Jenkins搬到Docker上。為什么要寫這篇文章呢?因為找過相
        推薦度:
        標簽: 2.0 部署 core
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日本一区二区三区免费高清在线| 亚洲免费在线视频播放| 午夜国产羞羞视频免费网站| 国产国产成年年人免费看片| 无码欧精品亚洲日韩一区夜夜嗨| 久久久久亚洲爆乳少妇无 | 国产大片51精品免费观看| 亚洲理论片在线中文字幕| 亚洲乱码国产乱码精华| 久久亚洲中文无码咪咪爱| 四虎国产精品永久免费网址| 久久九九兔免费精品6| 日韩电影免费在线| 久久久久久久综合日本亚洲| 亚洲无码一区二区三区| a毛片视频免费观看影院| 成人女人A级毛片免费软件| 中文字幕亚洲一区二区三区| 青青操免费在线观看| 国产AV无码专区亚洲AV男同| 免费一级不卡毛片| 亚洲国产V高清在线观看| 亚洲娇小性xxxx色| 美女网站在线观看视频免费的| 野花高清在线观看免费完整版中文| 亚洲天堂电影在线观看| 国产成人一区二区三区视频免费| 国产色爽女小说免费看| 一级一黄在线观看视频免费| 日本特黄特色免费大片| 一道本在线免费视频| 亚洲AV无码日韩AV无码导航| 国产精品黄页免费高清在线观看| 免费无码一区二区三区蜜桃大| 久久亚洲精品无码aⅴ大香| 免费无码午夜福利片| 亚洲国产精品嫩草影院在线观看| 亚洲免费黄色网址| 无套内谢孕妇毛片免费看看| 亚洲三区在线观看无套内射| 男女一边桶一边摸一边脱视频免费|