一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

2020-05-26 14:21Loongle ASP.NET教程

這篇文章主要給大家介紹了關于Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的相關資料,文中通過示例代碼及圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

前言

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

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

環境準備

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

系統環境:CentOS 7.3(64位)

其實用的就是騰訊云

安裝Docker

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

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

?
1
# sudo yum -y update

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

?
1
2
3
# sudo yum install -y yum-utils \
 device-mapper-persistent-data \
 lvm2

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

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

4.安裝Docker ce

?
1
# sudo yum install docker-ce

tips:在生產系統上,您應該安裝特定版本的Docker CE,而不是始終使用最新版本。

5.啟動Docker

?
1
# sudo systemctl start docker

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

?
1
# docker run hello-world

如果出現以下的界面,就代表安裝成功

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

配置Docker加速器

此步驟不是必須的,前提是你的環境有梯子或者網速可以的,那么可以忽略這個步驟。

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

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

安裝Jenkins

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

?
1
2
# touch Dockerfile
# vim Dockerfile

插入以下內容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
FROM jenkins
 
USER root
#清除了基礎鏡像設置的源,切換成騰訊云的jessie源
#使用非騰訊云環境的需要將 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 因為等下構建環境的需要
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容器內部沒有這個包

?
1
2
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的時候會出現拒絕訪問的問題,其實就是容器的jenkins用戶沒有權限訪問容器外的docker命令,所以 RUN命令 需要把Jenkins用戶加入到Docker用戶組

構建Image

?
1
# docker build . -t auto-jenkins

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

出現以上 Successfully 內容代表安裝Jenkins成功

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

?
1
# mkdir -p /var/jenkins_home

運行 Jenkins

?
1
2
3
4
5
# 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

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

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

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

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

這個時候 run Jenkins 會提示成功

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

執行 docker ps 命令后,發現什么都沒有

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

執行 docker ps -a 命令看看

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

 

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

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

不難看出其實 Jenkins 啟動已經是可以了,只是權限問題導致這個錯誤的信息。

現在需要看一下Jenkins官方的Dockerfile

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

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

?
1
2
##修改 /var/jenkins 文件夾權限
# chown -R 1000 /var/jenkins_home

繼續執行運行Jenkins 代碼

?
1
2
3
4
5
# 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

這時你會看到悲催的信息

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

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

?
1
# docker rm -f jenkins

刪除完容器后,繼續執行運行命令

?
1
2
3
4
5
# 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

出現一串字符后,執行 docker ps 會發現容器已經啟動了,正常了。這個時候是不是可以使用了?別著急,還有很長的路。

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

配置Jenkins

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

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

首先,進入容器內

?
1
# docker exec -it jenkins /bin/bash

查看/var/jenkins_home/secrets/initialAdminPassword 文件內的密碼

?
1
# cat /var/jenkins_home/secrets/initialAdminPassword

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

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

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

等待初始化完畢

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

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

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

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

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

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

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

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

填寫源代碼管理

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

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

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

勾上 Delete workspace before build start 是設置構建前刪除工作區

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

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

增加一個Execute Shell 腳本,并填寫以下腳本內容

?
1
2
3
4
5
6
7
8
9
10
11
12
#!/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

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

應用保存,回到項目界面上。點擊立即構建進行部署工作 SUCCESS

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

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

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

遇到的問題

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
FROM jenkins
 
USER root
#清除了基礎鏡像設置的源,切換成阿里云的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

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

第一:缺少 docker-compose

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

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

第二:權限問題

從容器內手動安裝 docker-compose 會出現無法安裝的情況,原因是Jenkins 用戶沒有安裝docker-compose 的權限

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

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

tips:正式生產環境不建議直接切換到 root 用戶運行

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

?
1
2
3
4
5
# 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

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

Centos7+Docker+Jenkins+ASP.NET Core 2.0自動化發布與部署的實現

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

此時此刻,如果你曾經遇到過這樣的問題,哥現在已經給你擦眼淚了。

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

寫在最后

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

好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

原文鏈接:http://www.cnblogs.com/LongJiangXie/p/7517909.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美╳bbbb| 午夜爱爱爱爱爽爽爽视频网站 | 青青草99热这里都是精品 | 日本暖暖在线 | 国产综合成人亚洲区 | 狠狠澡 | 俄罗斯女同和女同xx | 国产良心大作白丝精厕 | 91国在线观看 | 亚洲 欧美 国产 日韩 字幕 | 无套啪啪 | 国产无套在线播放 | 美女插插视频 | 久久婷婷五月综合色精品首页 | 高清色黄毛片一级毛片 | 日韩一区二区三 | 呜呜别塞了啊抽插 | 成人免费播放器 | 日韩激情视频在线观看 | 国产精品视频人人做人人爱 | 奇米影视777最新在线 | 免费视频 久久久 | 日不卡 | 欧美在线视频一区 | 青草午夜精品视频在线观看 | 扒开老师挠尿口到崩溃刑罚 | 大象传媒1234区 | 色综合国产 | 亚洲男人的天堂视频 | 精品国产一区二区三区久久久狼 | 国产综合成色在线视频 | 色老板在线免费观看 | 亚洲国产精品一区二区三区久久 | 欧美日韩亚洲国内综合网香蕉 | 都市后宫小说 | 激情五色月 | 日韩国产成人精品视频人 | 深夜网站在线观看 | 国产成人精品午夜在线播放 | a级片在线观看免费 | 波多野结衣小说 |