目錄環(huán)境說明 騰訊云輕量服務(wù)器, 配置 1c 2g 6mb ,系統(tǒng)是 ubuntu 20.14,Docker 和 Jenkins 都在這臺服務(wù)器上面, 群暉218+一臺,Gogs 在這臺服務(wù)器上。Docker安裝
創(chuàng)新互聯(lián)公司主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)井研,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
卸載舊的 Dockersudo apt-get remove docker docker-engine docker.io containerd runc
更新 apt 包索引并安裝包以允許 apt 通過 HTTPS 使用存儲庫sudo apt-get updatesudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world
不同的系統(tǒng)安裝方式可以查閱Gogs安裝
Gogs 是一款用 Go 語言開發(fā)的輕量級極易搭建的自助 Git 服務(wù)。 選擇 Gogs 主要因為它相對于 Gitlab 動則幾個G的內(nèi)用暫用率來說輕太多了。Gogs 會大大減低系統(tǒng)消耗,跑起來也就占用100mb內(nèi)存。我的 Gogs 是跑在群暉上面的,效果都是一樣,都是在 Docker 中托管
sudo docker pull gogs/gogs
mkdir -p /var/gogs
docker run -d --name=my_gogs -p 6022:22 -p 6080:3000 -v /var/gogs:/data gogs/gogs
容器啟動后通過 http://xxxxxxxx:6080 進行 Gogs 的初始配置
數(shù)據(jù)庫類型建議選擇 linux 自帶的 SQLite3 ,支撐十幾個人左右的團隊使用足夠了。域名填寫 Gogs 所在服務(wù)器的域名或者 ip 地址。http 端口號和容器內(nèi)部端口一致,應(yīng)用 URL 填寫訪問 Gogs 的域名端口或 ip 端口,點擊安裝后注冊一個新用戶登陸即可
Docker中托管.NetCore服務(wù)
新建一個 WebApi 項目
項目中增加一個 DockerFile 文件并且簡單配置# 指定依賴版本FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim WORKDIR /appCOPY . /publishWORKDIR /publish# 設(shè)置Docker容器對外暴露端口EXPOSE 80# 設(shè)置時區(qū)RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' >/etc/timezone # 程序入口ENTRYPOINT ["dotnet", "DemoWebApi.dll"]
發(fā)布Api服務(wù),如果發(fā)布文件中沒有 DockerFile 文件需要手動修改項目文件,發(fā)布成功后將發(fā)布文件 copy 到服務(wù)器指定的文件夾中<ItemGroup> <None Update="Dockerfile"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> </ItemGroup>
進入服務(wù)器剛 copy 的發(fā)布文件根路徑下,執(zhí)行 docker build -t {REPOSITORY}:{TAG} . 命令 通過 DockerFile 來生成 Docker 鏡像文件,REPOSITORY 是鏡像的名字,TAG 是標(biāo)簽。譬如 docker build -t demo:v1 .
通過 docker images 命令來查看生成的所有鏡像
鏡像生成成功后就可以通過鏡像創(chuàng)建并運行容器了。執(zhí)行 docker run --name demoapi -dp 5009:80/tcp demo:v1 命令創(chuàng)建并運行容器
-d:后臺運行容器,并返回容器ID;
-p:指定端口映射,格式為:主機(宿主)端口:容器端口,容器的端口就是你程序啟動的端口,建議直接在項目中寫死。
-- name:容器名字
執(zhí)行后可以通過 docker ps 查看所有運行起來的容器狀態(tài),需要查看所有容器可以使用 docker ps -a 命令
用 postman 測試一下是否部署成功了
列舉一些docker常用命令docker restart {容器id} #重啟容器 docker start {容器id} #啟動容器 docker attach {容器id} # 這樣進入容器退出會導(dǎo)致容器也退出,attach 可以用戶看容器的標(biāo)準(zhǔn)輸出 docker attach {容器id} --sig-proxy=false # 加上參數(shù)不會導(dǎo)致同期退出 docker exec -it {容器id} /bin/bash # 進入容器需要在容器中執(zhí)行命令需要使用 exec 命令 docker logs {容器id} -f # 跟蹤日志輸出 -f 跟蹤日志輸出 docker rm -f {容器id}# 刪除已經(jīng)停止的容器 docker rmi {REPOSITORY:TAG} # 刪除指定鏡像 docker image prune # 刪除懸空鏡像,也就是沒有被容器引用的鏡像
到這里服務(wù)已經(jīng)在 Docker 完成了托管,但是每次發(fā)布都需要 build 新的鏡像,然后停止老的容器,在創(chuàng)建一個新的容器,無形中增加了工作量。Jenkins 可以替我們完成這些工作Jenkins安裝
sudo apt-get install openjdk-8-jdk
安裝 LTS 版本的 Jenkinswget -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 updatesudo apt-get install jenkins
查看運行狀態(tài) systemctl status jenkins 正常會輸出如下內(nèi)容
Jenkins 默認(rèn)端口是 8080,安裝成功后通過 http://xxxx:8080 即可訪問,第一步需要先解鎖,管理員密碼會在安裝成功后輸出,也可以通過命令 cat /var/lib/jenkins/secrets/initialAdminPassword
輸入密碼后進入初始化頁面,選擇安裝推薦插件
插件安裝進度,需要一些些時間
結(jié)束后創(chuàng)建管理賬號登錄即可,進入系統(tǒng)管理,選擇插件管理,搜索gogs插件后安裝。
安裝后需要重啟一下 Jenkins,訪問鏈接 http://xxxx:8080/restart 后點擊重啟,或者通過執(zhí)行 service jenkins restart 重啟
為了方便執(zhí)行腳本,需要讓 Jenkins 以 root 用戶來運行,編輯文件 vim /etc/sysconfig/jenkins 或 vim /etc/default/jenkins 取消 JENKINS_USER 注釋,并把值設(shè)置成 JENKINS_USER="root" 后修改文件夾權(quán)限chown -R root:root /var/lib/jenkinschown -R root:root /var/cache/jenkinschown -R root:root /var/log/jenkins
jenkins 常用操作啟動 service jenkins start 重啟 service jenkins restart 或訪問 http://xxxx:8080/restart 停止 service jenkins stop 或訪問 http://xxxx:8080/exit 重新加載配置文件 http://xxxx:8080/reload使用Jenkins自動化
因為需要在服務(wù)器上 build 項目,所以需要安裝 .NetCore 環(huán)境,可以查閱 自行安裝
把新建的項目推送到 Gogs 倉庫中后點擊倉庫高級設(shè)置
選擇 Web 鉤子,添加新 Gogs 的 Web 鉤子
配置 Web 鉤子,推送地址前面是 Jenkins 的訪問鏈接,后面 job 名字可以自己定義,選擇只有在 push 的時候觸發(fā)鉤子,也可以自己選定事件
添加后重新點擊管理 Web 鉤子,選擇剛才新建的鉤子,點擊測試推送來驗證是否正常,拋出的異常如果是 job 未定義說明鉤子是正常的,如果是其他的異常可以查看推送地址是否正確,以及 Jenkins 上的 Gogs 插件是否正確安裝
回到 Jenkins 頁面,新建一個任務(wù),任務(wù)名就是之前 Gogs 里面的 job 名字,選擇構(gòu)建自由風(fēng)格的軟件項目
添加倉庫配置,Repository URL 是你的倉庫地址,點擊添加你的倉庫憑據(jù)信息,最后指定操作的分支
# 判斷是否存在demo鏡像是否存在docker images | grep demo &> /dev/nullif [ $? -ne 0 ]then # 不存在不做處理 echo "not existed demo"else # 如果鏡像存在默認(rèn)認(rèn)為容器也是在運行狀態(tài) echo "existed demo" # 停止刪除容器和鏡像 docker stop demoapi docker rm -f demoapi docker rmi demo:v1fi# 重新build后生成鏡像并運行容器cd DemoWebApi/# 發(fā)布到到指定路徑dotnet publish -c Release -o /publish# 進入路徑生成鏡像后啟動容器cd /publishdocker build -t demo:v1 .docker run --name demoapi -dp 5009:80/tcp demo:v1
保存后點擊立即構(gòu)建驗證一下,如果構(gòu)建失敗可以在控制臺輸出中查看詳細構(gòu)建過程和錯誤信息
總結(jié)
簡單記錄了自己折騰的全過程,Jenkins 和 Docker 還有很多功能,要在使用過程中慢慢了解。
到此這篇關(guān)于Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟的文章就介紹到這了,更多相關(guān)Docker 自動化部署.NetCore內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
文章名稱:Gogs+Jenkins+Docker自動化部署.NetCore的方法步驟
文章來源:http://jinyejixie.com/article0/djcpio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、移動網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、外貿(mào)建站、全網(wǎng)營銷推廣、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容