国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

Gogs+Jenkins+Docker 自動(dòng)化部署.NetCore的方法步驟

發(fā)布時(shí)間:2021-08-15 18:37 來(lái)源: 閱讀:0 作者:她微笑的臉 欄目: 服務(wù)器 歡迎投稿:712375056

目錄

環(huán)境說(shuō)明

  • 騰訊云輕量服務(wù)器, 配置 1c 2g 6mb ,系統是 ubuntu 20.14,Docker 和 Jenkins 都在這臺服務(wù)器上面,
  • 群暉218+一臺,Gogs 在這臺服務(wù)器上。

Docker安裝

卸載舊的 Docker

sudo apt-get remove docker docker-engine docker.io containerd runc

更新 apt 包索引并安裝包以允許 apt 通過(guò) HTTPS 使用存儲庫

sudo apt-get update

sudo apt-get install \
  apt-transport-https \
  ca-certificates \
  curl \
  gnupg \
  lsb-release

添加 Docker 官方的 GPG 密鑰

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

安裝 Docker

sudo apt-get install docker-ce docker-ce-cli containerd.io

通過(guò)運行 hello-world 驗證 Docker 是否已正確安裝。輸出 Hello from Docker! 表示安裝成功

sudo docker run hello-world

不同的系統安裝方式可以查閱

Gogs安裝

Gogs 是一款用 Go 語(yǔ)言開(kāi)發(fā)的輕量級極易搭建的自助 Git 服務(wù)。 選擇 Gogs 主要因為它相對于 Gitlab 動(dòng)則幾個(gè)G的內用暫用率來(lái)說(shuō)輕太多了。Gogs 會(huì )大大減低系統消耗,跑起來(lái)也就占用100mb內存。我的 Gogs 是跑在群暉上面的,效果都是一樣,都是在 Docker 中托管

拉取 Gogs 鏡像

sudo docker pull gogs/gogs

創(chuàng )建 Gogs 文件掛載路徑

mkdir -p /var/gogs

啟動(dòng)容器 6022 是 https,6080 是 http,可以通過(guò) docker ps 命令來(lái)查看是否啟動(dòng)成功。

docker run -d --name=my_gogs -p 6022:22 -p 6080:3000 -v /var/gogs:/data gogs/gogs

容器啟動(dòng)后通過(guò) http://xxxxxxxx:6080 進(jìn)行 Gogs 的初始配置

數據類(lèi)型建議選擇 linux 自帶的 SQLite3 ,支撐十幾個(gè)人左右的團隊使用足夠了。域名填寫(xiě) Gogs 所在服務(wù)器的域名或者 ip 地址。http 端口號和容器內部端口一致,應用 URL 填寫(xiě)訪(fǎng)問(wèn) Gogs 的域名端口或 ip 端口,點(diǎn)擊安裝后注冊一個(gè)新用戶(hù)登陸即可

Gogs安裝完成后新建一個(gè) Demo 倉庫稍后使用

Docker中托管.NetCore服務(wù)

新建一個(gè) WebApi 項目

項目中增加一個(gè) DockerFile 文件并且簡(jiǎn)單配置

# 指定依賴(lài)版本
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim 
WORKDIR /app

COPY . /publish
WORKDIR /publish
# 設置Docker容器對外暴露端口
EXPOSE 80
# 設置時(shí)區
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' >/etc/timezone 
# 程序入口
ENTRYPOINT ["dotnet", "DemoWebApi.dll"]

發(fā)布Api服務(wù),如果發(fā)布文件中沒(méi)有 DockerFile 文件需要手動(dòng)修改項目文件,發(fā)布成功后將發(fā)布文件 copy 到服務(wù)器指定的文件夾中

 <ItemGroup>
        <None Update="Dockerfile">
            <CopyToOutputDirectory>Always</CopyToOutputDirectory>
        </None>
    </ItemGroup>

進(jìn)入服務(wù)器剛 copy 的發(fā)布文件根路徑下,執行 docker build -t {REPOSITORY}:{TAG} . 命令 通過(guò) DockerFile 來(lái)生成 Docker 鏡像文件,REPOSITORY 是鏡像的名字,TAG 是標簽。譬如 docker build -t demo:v1 .


通過(guò) docker images 命令來(lái)查看生成的所有鏡像

鏡像生成成功后就可以通過(guò)鏡像創(chuàng )建并運行容器了。執行 docker run --name demoapi -dp 5009:80/tcp demo:v1 命令創(chuàng )建并運行容器
-d:后臺運行容器,并返回容器ID;
-p:指定端口映射,格式為:主機(宿主)端口:容器端口,容器的端口就是你程序啟動(dòng)的端口,建議直接在項目中寫(xiě)死。
-- name:容器名字

執行后可以通過(guò) docker ps 查看所有運行起來(lái)的容器狀態(tài),需要查看所有容器可以使用 docker ps -a 命令

用 postman 測試一下是否部署成功了

列舉一些docker常用命令

  • docker restart {容器id} #重啟容器
  • docker start {容器id} #啟動(dòng)容器
  • docker attach {容器id} # 這樣進(jìn)入容器退出會(huì )導致容器也退出,attach 可以用戶(hù)看容器的標準輸出
  • docker attach {容器id} --sig-proxy=false # 加上參數不會(huì )導致同期退出
  • docker exec -it {容器id} /bin/bash # 進(jìn)入容器需要在容器中執行命令需要使用 exec 命令
  • docker logs {容器id} -f # 跟蹤日志輸出 -f 跟蹤日志輸出
  • docker rm -f {容器id}# 刪除已經(jīng)停止的容器
  • docker rmi {REPOSITORY:TAG} # 刪除指定鏡像
  • docker image prune # 刪除懸空鏡像,也就是沒(méi)有被容器引用的鏡像

到這里服務(wù)已經(jīng)在 Docker 完成了托管,但是每次發(fā)布都需要 build 新的鏡像,然后停止老的容器,在創(chuàng )建一個(gè)新的容器,無(wú)形中增加了工作量。Jenkins 可以替我們完成這些工作

Jenkins安裝

Jenkins 是依賴(lài) java 的,所以需要安裝 java 的 sdk,這里選擇 java8

sudo apt-get install openjdk-8-jdk

安裝 LTS 版本的 Jenkins

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb https://pkg.jenkins.io/debian-stable binary/ > \
    /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

查看運行狀態(tài) systemctl status jenkins 正常會(huì )輸出如下內容

Jenkins 默認端口是 8080,安裝成功后通過(guò) http://xxxx:8080 即可訪(fǎng)問(wèn),第一步需要先解鎖,管理員密碼會(huì )在安裝成功后輸出,也可以通過(guò)命令 cat /var/lib/jenkins/secrets/initialAdminPassword

輸入密碼后進(jìn)入初始化頁(yè)面,選擇安裝推薦插件

插件安裝進(jìn)度,需要一些些時(shí)間

結束后創(chuàng )建管理賬號登錄即可,進(jìn)入系統管理,選擇插件管理,搜索gogs插件后安裝。

安裝后需要重啟一下 Jenkins,訪(fǎng)問(wèn)鏈接 http://xxxx:8080/restart 后點(diǎn)擊重啟,或者通過(guò)執行 service jenkins restart 重啟

為了方便執行腳本,需要讓 Jenkins 以 root 用戶(hù)來(lái)運行,編輯文件 vim /etc/sysconfig/jenkinsvim /etc/default/jenkins 取消 JENKINS_USER 注釋?zhuān)阎翟O置成 JENKINS_USER="root" 后修改文件夾權限

chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

jenkins 常用操作

  • 啟動(dòng) service jenkins start
  • 重啟 service jenkins restart 或訪(fǎng)問(wèn) http://xxxx:8080/restart
  • 停止 service jenkins stop 或訪(fǎng)問(wèn) http://xxxx:8080/exit
  • 重新加載配置文件 http://xxxx:8080/reload

使用Jenkins自動(dòng)化

因為需要在服務(wù)器上 build 項目,所以需要安裝 .NetCore 環(huán)境,可以查閱 自行安裝

把新建的項目推送到 Gogs 倉庫中后點(diǎn)擊倉庫高級設置

選擇 Web 鉤子,添加新 Gogs 的 Web 鉤子

配置 Web 鉤子,推送地址前面是 Jenkins 的訪(fǎng)問(wèn)鏈接,后面 job 名字可以自己定義,選擇只有在 push 的時(shí)候觸發(fā)鉤子,也可以自己選定事件

添加后重新點(diǎn)擊管理 Web 鉤子,選擇剛才新建的鉤子,點(diǎn)擊測試推送來(lái)驗證是否正常,拋出的異常如果是 job 未定義說(shuō)明鉤子是正常的,如果是其他的異??梢圆榭赐扑偷刂肥欠裾_,以及 Jenkins 上的 Gogs 插件是否正確安裝

回到 Jenkins 頁(yè)面,新建一個(gè)任務(wù),任務(wù)名就是之前 Gogs 里面的 job 名字,選擇構建自由風(fēng)格的軟件項目

添加倉庫配置,Repository URL 是你的倉庫地址,點(diǎn)擊添加你的倉庫憑據信息,最后指定操作的分支

構建選擇執行shell腳本,腳本也可以放在服務(wù)器上這里調用就行,為了方便就直接寫(xiě)在這里


# 判斷是否存在demo鏡像是否存在
docker images | grep demo &> /dev/null
if [ $? -ne 0 ]
then
   # 不存在不做處理
	echo "not existed demo"
else
    # 如果鏡像存在默認認為容器也是在運行狀態(tài)
	echo "existed demo"
   	# 停止刪除容器和鏡像
    docker stop demoapi
    docker rm -f demoapi
    docker rmi demo:v1
fi

# 重新build后生成鏡像并運行容器
cd DemoWebApi/
# 發(fā)布到到指定路徑
dotnet publish -c Release -o /publish
# 進(jìn)入路徑生成鏡像后啟動(dòng)容器
cd /publish
docker build -t demo:v1 .
docker run --name demoapi -dp 5009:80/tcp demo:v1 

保存后點(diǎn)擊立即構建驗證一下,如果構建失敗可以在控制臺輸出中查看詳細構建過(guò)程和錯誤信息

回到 Gogs 的管理 Web 鉤子頁(yè)面重新推送,成功后 Jenkins 會(huì )自動(dòng)構建發(fā)布,之后只要 Push 到 Master 分支就會(huì )自動(dòng)發(fā)布


總結

簡(jiǎn)單記錄了自己折騰的全過(guò)程,Jenkins 和 Docker 還有很多功能,要在使用過(guò)程中慢慢了解。

到此這篇關(guān)于Gogs+Jenkins+Docker 自動(dòng)化部署.NetCore的方法步驟的文章就介紹到這了,更多相關(guān)Docker 自動(dòng)化部署.NetCore內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

久久久精品妓女影院妓女网| 熟女自慰30P| 国产精品爽爽VA在线观看网站| 国色天香卡一卡二乱码| 国产激情电影综合在线看| 成 人 黄 色 a v 播放 免费|