成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

瀏覽:228日期:2024-10-25 13:50:27
目錄環境說明Docker安裝Gogs安裝Docker中托管.NetCore服務Jenkins安裝使用Jenkins自動化總結環境說明 騰訊云輕量服務器, 配置 1c 2g 6mb ,系統是 ubuntu 20.14,Docker 和 Jenkins 都在這臺服務器上面, 群暉218+一臺,Gogs 在這臺服務器上。Docker安裝

卸載舊的 Docker

sudo 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

添加 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

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

sudo docker run hello-world

不同的系統安裝方式可以查閱 docker 官方安裝說明

Gogs安裝

Gogs 是一款用 Go 語言開發的輕量級極易搭建的自助 Git 服務。 選擇 Gogs 主要因為它相對于 Gitlab 動則幾個G的內用暫用率來說輕太多了。Gogs 會大大減低系統消耗,跑起來也就占用100mb內存。我的 Gogs 是跑在群暉上面的,效果都是一樣,都是在 Docker 中托管

拉取 Gogs 鏡像

sudo docker pull gogs/gogs

創建 Gogs 文件掛載路徑

mkdir -p /var/gogs

啟動容器 6022 是 https,6080 是 http,可以通過 docker ps 命令來查看是否啟動成功。

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

容器啟動后通過 http://xxxxxxxx:6080 進行 Gogs 的初始配置

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

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

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

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

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

Gogs 官方文檔

Docker中托管.NetCore服務

新建一個 WebApi 項目

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

項目中增加一個 DockerFile 文件并且簡單配置

# 指定依賴版本FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim WORKDIR /appCOPY . /publishWORKDIR /publish# 設置Docker容器對外暴露端口EXPOSE 80# 設置時區RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo ’Asia/Shanghai’ >/etc/timezone # 程序入口ENTRYPOINT ['dotnet', 'DemoWebApi.dll']

發布Api服務,如果發布文件中沒有 DockerFile 文件需要手動修改項目文件,發布成功后將發布文件 copy 到服務器指定的文件夾中

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

進入服務器剛 copy 的發布文件根路徑下,執行 docker build -t {REPOSITORY}:{TAG} . 命令 通過 DockerFile 來生成 Docker 鏡像文件,REPOSITORY 是鏡像的名字,TAG 是標簽。譬如 docker build -t demo:v1 .

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

通過 docker images 命令來查看生成的所有鏡像

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

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

執行后可以通過 docker ps 查看所有運行起來的容器狀態,需要查看所有容器可以使用 docker ps -a 命令

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

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

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

列舉一些docker常用命令

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

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

Jenkins安裝

Jenkins 是依賴 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 updatesudo apt-get install jenkins

查看運行狀態 systemctl status jenkins 正常會輸出如下內容

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

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

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

輸入密碼后進入初始化頁面,選擇安裝推薦插件

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

插件安裝進度,需要一些些時間

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

結束后創建管理賬號登錄即可,進入系統管理,選擇插件管理,搜索gogs插件后安裝。

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

安裝后需要重啟一下 Jenkins,訪問鏈接 http://xxxx:8080/restart 后點擊重啟,或者通過執行 service jenkins restart 重啟

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

為了方便執行腳本,需要讓 Jenkins 以 root 用戶來運行,編輯文件 vim /etc/sysconfig/jenkins 或 vim /etc/default/jenkins 取消 JENKINS_USER 注釋,并把值設置成 JENKINS_USER='root' 后修改文件夾權限

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自動化

因為需要在服務器上 build 項目,所以需要安裝 .NetCore 環境,可以查閱 微軟官方文檔 自行安裝

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

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

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

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

配置 Web 鉤子,推送地址前面是 Jenkins 的訪問鏈接,后面 job 名字可以自己定義,選擇只有在 push 的時候觸發鉤子,也可以自己選定事件

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

添加后重新點擊管理 Web 鉤子,選擇剛才新建的鉤子,點擊測試推送來驗證是否正常,拋出的異常如果是 job 未定義說明鉤子是正常的,如果是其他的異常可以查看推送地址是否正確,以及 Jenkins 上的 Gogs 插件是否正確安裝

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

回到 Jenkins 頁面,新建一個任務,任務名就是之前 Gogs 里面的 job 名字,選擇構建自由風格的軟件項目

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

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

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

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

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

# 判斷是否存在demo鏡像是否存在docker images | grep demo &> /dev/nullif [ $? -ne 0 ]then # 不存在不做處理echo 'not existed demo'else # 如果鏡像存在默認認為容器也是在運行狀態echo 'existed demo' # 停止刪除容器和鏡像 docker stop demoapi docker rm -f demoapi docker rmi demo:v1fi# 重新build后生成鏡像并運行容器cd DemoWebApi/# 發布到到指定路徑dotnet publish -c Release -o /publish# 進入路徑生成鏡像后啟動容器cd /publishdocker build -t demo:v1 .docker run --name demoapi -dp 5009:80/tcp demo:v1

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

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

回到 Gogs 的管理 Web 鉤子頁面重新推送,成功后 Jenkins 會自動構建發布,之后只要 Push 到 Master 分支就會自動發布

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟

總結

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

到此這篇關于Gogs+Jenkins+Docker 自動化部署.NetCore的方法步驟的文章就介紹到這了,更多相關Docker 自動化部署.NetCore內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Docker
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
精品影院一区二区久久久| 国产精品一区毛片| 99精品免费| 欧美剧在线免费观看网站| 欧美激情一区二区在线| 亚洲欧美日韩中文播放| 一区二区三区在线观看国产| 男男gaygay亚洲| 在线观看欧美一区| 国产精品综合| 久久精品一区二区| 亚洲国产va精品久久久不卡综合 | 激情亚洲网站| 欧美一区二区三区免费在线看| 国产精品18久久久久久久久久久久| 欧美午夜不卡| 国产精品久久久久天堂| 99国内精品| 91麻豆精品国产| 亚洲欧美偷拍三级| 亚洲综合久久av| 精品一区二区三区日韩| 中文字幕av在线一区二区三区| 久久国产成人午夜av影院| 成人妖精视频yjsp地址| 久热re这里精品视频在线6| 日韩免费性生活视频播放| 极品少妇xxxx偷拍精品少妇| 在线播放国产精品二区一二区四区 | 国产精品影视在线观看| 色视频成人在线观看免| 好吊日精品视频| 欧美成人一区二区三区| 国产精品a久久久久| 国产精品天天摸av网| 国产成人免费视频一区| 久久精品国产综合精品| 精品捆绑美女sm三区| 久久精品男人的天堂| 9久re热视频在线精品| fc2成人免费人成在线观看播放 | 亚洲精品一区二区在线观看| 新狼窝色av性久久久久久| 日韩美女啊v在线免费观看| 国产98色在线|日韩| 一区二区三区四区五区在线| 国产欧美综合色| 欧美~级网站不卡| 制服丝袜国产精品| 中文字幕日本不卡| 亚洲一区视频在线| 欧美精品一区在线发布| 国产精品天天看| 91香蕉视频在线| 日韩欧美一级片| 高清不卡一区二区在线| 轻轻草成人在线| 欧美午夜寂寞影院| 亚洲国产第一| 亚洲精品久久7777| 在线国产亚洲欧美| 99视频精品在线| 中文字幕制服丝袜一区二区三区| 免费亚洲一区二区| 久久国产人妖系列| 一区二区欧美在线观看| 欧美怡红院视频| 欧美日韩亚洲一区二区三区四区| 亚洲电影一区二区| 在线观看欧美精品| 欧美承认网站| 精品亚洲成a人在线观看| 欧美色图片你懂的| 国内精品久久久久久久97牛牛| 一区二区三区av电影| 日韩三区在线观看| 中文亚洲字幕| 91麻豆6部合集magnet| 奇米影视一区二区三区| 国产日产亚洲精品系列| 欧美日韩国产系列| 一区二区福利| 99精品久久只有精品| 日本不卡一二三区黄网| 国产性天天综合网| 欧美美女一区二区在线观看| 国产伦理一区| 91丨porny丨首页| 国产精品99久久久久久似苏梦涵| 日韩理论片网站| 久久精品夜夜夜夜久久| 日韩一区二区三区av| 久久精品91| 亚洲激情精品| 欧美午夜视频| 国产一区免费电影| 亚洲电影一区二区三区| 国产日本亚洲高清| 精品国产精品一区二区夜夜嗨| 色久优优欧美色久优优| 一本久道久久久| 亚洲国产精品一区在线观看不卡| 国产精品白丝av| 免费人成在线不卡| 国产精品一区在线观看你懂的| 亚洲国产一区二区在线播放| 亚洲国产精品精华液ab| 久久精品免费在线观看| 欧美女孩性生活视频| 在线观看亚洲成人| 精品视频色一区| 91黄色免费网站| 久久一区亚洲| 欧美在线三级电影| 欧美性xxxxxx少妇| 欧美日韩在线三区| 欧美激情一区三区| 亚洲一级二级三级| 一二三四社区欧美黄| 亚洲欧美一区二区三区久本道91| 精品国产a毛片| 国产精品久久久久一区二区三区| 亚洲精选视频在线| 亚洲欧美成人一区二区三区| 中文字幕亚洲欧美在线不卡| 亚洲精品水蜜桃| 午夜国产精品一区| 看电视剧不卡顿的网站| 蜜桃av一区二区在线观看| 日本在线播放一区二区三区| 九色porny丨国产精品| 国产主播一区二区三区| 国产精品综合av一区二区国产馆| 国产99精品国产| 91在线精品一区二区| 99久久精品免费看国产| 你懂的网址国产 欧美| 99精品在线免费| 久久国产精品一区二区三区| 欧美精品在线观看一区二区| 51精品国自产在线| 国产欧美日本一区视频| 亚洲一二三四区不卡| 五月天网站亚洲| 成人精品一区二区三区四区| 伊人激情综合| 欧美理论电影在线| 国产精品午夜春色av| 亚洲一级二级在线| 成人免费高清在线| 欧美日韩精品久久| 色综合久久久久网| 精品三级av在线| 图片区小说区区亚洲影院| www.66久久| 久久xxxx| 久久综合九色综合97婷婷女人| 亚洲国产综合在线| 国产美女av一区二区三区| av激情亚洲男人天堂| 亚洲欧美视频| 精品美女被调教视频大全网站| 水蜜桃久久夜色精品一区的特点| 波多野结衣中文一区| 日韩欧美在线一区二区三区| 亚洲精品国产视频| 国产麻豆精品视频| 久久只有精品| 亚洲欧美偷拍三级| 黑人精品欧美一区二区蜜桃| 一本一道久久a久久精品| 日韩精品中文字幕一区二区三区 | 一区二区在线观看免费视频播放| 国产精品自拍一区| 欧美日韩午夜在线视频| 亚洲视频一二区| 不卡在线观看av| 欧美狂野另类xxxxoooo| 日韩高清不卡一区| 一区二区日韩免费看| 日韩三级中文字幕| 天堂一区二区在线| 亚洲免费久久| 亚洲国产精品成人综合| 成人精品国产免费网站| 久久免费一区| 亚洲色图另类专区| 午夜欧美精品| 欧美日韩国产综合一区二区| 亚洲大尺度视频在线观看| 一级成人国产| 亚洲午夜精品久久久久久久久| 在线观看日韩av电影| 成人免费在线观看入口| 女生裸体视频一区二区三区| 日韩一区二区三区三四区视频在线观看| 麻豆91免费看| 欧美日韩国产另类一区| 免费欧美高清视频| 亚洲在线播放电影|