电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:157日期:2024-10-25 13:50:27
目錄環(huán)境說明Docker安裝Gogs安裝Docker中托管.NetCore服務(wù)Jenkins安裝使用Jenkins自動(dòng)化總結(jié)環(huán)境說明 騰訊云輕量服務(wù)器, 配置 1c 2g 6mb ,系統(tǒng)是 ubuntu 20.14,Docker 和 Jenkins 都在這臺服務(wù)器上面, 群暉218+一臺,Gogs 在這臺服務(wù)器上。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

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

sudo docker run hello-world

不同的系統(tǒng)安裝方式可以查閱 docker 官方安裝說明

Gogs安裝

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

拉取 Gogs 鏡像

sudo docker pull gogs/gogs

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

mkdir -p /var/gogs

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

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

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

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

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

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

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

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

Gogs 官方文檔

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

新建一個(gè) WebApi 項(xiàng)目

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

項(xiàng)目中增加一個(gè) DockerFile 文件并且簡單配置

# 指定依賴版本FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim WORKDIR /appCOPY . /publishWORKDIR /publish# 設(shè)置Docker容器對外暴露端口EXPOSE 80# 設(shè)置時(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 文件需要手動(dòng)修改項(xiàng)目文件,發(fā)布成功后將發(fā)布文件 copy 到服務(wù)器指定的文件夾中

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

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

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

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

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

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

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

執(zhí)行后可以通過 docker ps 查看所有運(yùn)行起來的容器狀態(tài),需要查看所有容器可以使用 docker ps -a 命令

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

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

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

列舉一些docker常用命令

docker restart {容器id} #重啟容器 docker start {容器id} #啟動(dòng)容器 docker attach {容器id} # 這樣進(jìn)入容器退出會(huì)導(dǎo)致容器也退出,attach 可以用戶看容器的標(biāo)準(zhǔn)輸出 docker attach {容器id} --sig-proxy=false # 加上參數(shù)不會(huì)導(dǎo)致同期退出 docker exec -it {容器id} /bin/bash # 進(jìn)入容器需要在容器中執(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)建一個(gè)新的容器,無形中增加了工作量。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

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

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

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

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

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

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

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

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

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

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

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

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

為了方便執(zhí)行腳本,需要讓 Jenkins 以 root 用戶來運(yùn)行,編輯文件 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 常用操作

啟動(dòng) service jenkins start 重啟 service jenkins restart 或訪問 http://xxxx:8080/restart 停止 service jenkins stop 或訪問 http://xxxx:8080/exit 重新加載配置文件 http://xxxx:8080/reload使用Jenkins自動(dòng)化

因?yàn)樾枰诜?wù)器上 build 項(xiàng)目,所以需要安裝 .NetCore 環(huán)境,可以查閱 微軟官方文檔 自行安裝

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

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

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

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

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

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

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

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

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

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

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

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

構(gòu)建選擇執(zhí)行shell腳本,腳本也可以放在服務(wù)器上這里調(diào)用就行,為了方便就直接寫在這里

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

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

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

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

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

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

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

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

總結(jié)

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

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

標(biāo)簽: Docker
相關(guān)文章:
主站蜘蛛池模板: 裹包机|裹膜机|缠膜机|绕膜机-上海晏陵智能设备有限公司 | 污水/卧式/潜水/钻井/矿用/大型/小型/泥浆泵,价格,参数,型号,厂家 - 安平县鼎千泵业制造厂 | 北京模型公司-军事模型-工业模型制作-北京百艺模型沙盘公司 | 便携式表面粗糙度仪-彩屏硬度计-分体式粗糙度仪-北京凯达科仪科技有限公司 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 高扬程排污泵_隔膜泵_磁力泵_节能自吸离心水泵厂家-【上海博洋】 | 青岛空压机,青岛空压机维修/保养,青岛空压机销售/出租公司,青岛空压机厂家电话 | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 智能垃圾箱|垃圾房|垃圾分类亭|垃圾分类箱专业生产厂家定做-宿迁市传宇环保设备有限公司 | 丹佛斯变频器-Danfoss战略代理经销商-上海津信变频器有限公司 | 济南律师,济南法律咨询,山东法律顾问-山东沃德律师事务所 | 多功能三相相位伏安表-变压器短路阻抗测试仪-上海妙定电气 | 加盟店-品牌招商加盟-创业项目商机平台 | 石膏基自流平砂浆厂家-高强石膏基保温隔声自流平-轻质抹灰石膏粉砂浆批发-永康市汇利建设有限公司 | 机构创新组合设计实验台_液压实验台_气动实训台-戴育教仪厂 | 商标转让-购买商标专业|放心的商标交易网-蜀易标商标网 | 低粘度纤维素|混凝土灌浆料|有机硅憎水粉|聚羧酸减水剂-南京斯泰宝 | 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 | 解放卡车|出口|济南重汽|报价大全|山东三维商贸有限公司 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | 【同风运车官网】一站式汽车托运服务平台,验车满意再付款 | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | 云南丰泰挖掘机修理厂-挖掘机维修,翻新,再制造的大型企业-云南丰泰工程机械维修有限公司 | 便携式表面粗糙度仪-彩屏硬度计-分体式粗糙度仪-北京凯达科仪科技有限公司 | 大型工业风扇_工业大风扇_大吊扇_厂房车间降温-合昌大风扇 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 培训一点通 - 合肥驾校 - 合肥新亚驾校 - 合肥八一驾校 | 蓝鹏测控平台 - 智慧车间系统 - 车间生产数据采集与分析系统 | 紫外可见光分光度计-紫外分光度计-分光光度仪-屹谱仪器制造(上海)有限公司 | 乐泰胶水_loctite_乐泰胶_汉高乐泰授权(中国)总代理-鑫华良供应链 | 茶楼装修设计_茶馆室内设计效果图_云臻轩茶楼装饰公司 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 定时排水阀/排气阀-仪表三通旋塞阀-直角式脉冲电磁阀-永嘉良科阀门有限公司 | 超声波_清洗机_超声波清洗机专业生产厂家-深圳市好顺超声设备有限公司 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 机房监控|动环监控|动力环境监控系统方案产品定制厂家 - 迈世OMARA |