最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年06月28日 17:05:40   作者:她微笑的臉  
這篇文章主要介紹了Gogs+Jenkins+Docker 自動(dòng)化部署.NetCore,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

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

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

Docker安裝

卸載舊的 Docker

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

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

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ò)運(yùn)行 hello-world 驗(yàn)證 Docker 是否已正確安裝。輸出 Hello from Docker! 表示安裝成功

sudo docker run hello-world

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

Gogs安裝

Gogs 是一款用 Go 語(yǔ)言開發(fā)的輕量級(jí)極易搭建的自助 Git 服務(wù)。 選擇 Gogs 主要因?yàn)樗鄬?duì)于 Gitlab 動(dòng)則幾個(gè)G的內(nèi)用暫用率來(lái)說(shuō)輕太多了。Gogs 會(huì)大大減低系統(tǒng)消耗,跑起來(lái)也就占用100mb內(nèi)存。我的 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 的初始配置

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

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

Gogs 官方文檔

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

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

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

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

COPY . /publish
WORKDIR /publish
# 設(shè)置Docker容器對(duì)外暴露端口
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ā)布文件中沒(méi)有 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} . 命令 通過(guò) DockerFile 來(lái)生成 Docker 鏡像文件,REPOSITORY 是鏡像的名字,TAG 是標(biāo)簽。譬如 docker build -t demo:v1 .


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

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

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

用 postman 測(cè)試一下是否部署成功了

列舉一些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 # 刪除懸空鏡像,也就是沒(méi)有被容器引用的鏡像

到這里服務(wù)已經(jīng)在 Docker 完成了托管,但是每次發(fā)布都需要 build 新的鏡像,然后停止老的容器,在創(chuàng)建一個(gè)新的容器,無(wú)形中增加了工作量。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 update
sudo apt-get install jenkins

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

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

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

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

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

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

為了方便執(zhí)行腳本,需要讓 Jenkins 以 root 用戶來(lái)運(yùn)行,編輯文件 vim /etc/sysconfig/jenkinsvim /etc/default/jenkins 取消 JENKINS_USER 注釋,并把值設(shè)置成 JENKINS_USER="root" 后修改文件夾權(quán)限

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 或訪問(wèn) http://xxxx:8080/restart
  • 停止 service jenkins stop 或訪問(wèn) http://xxxx:8080/exit
  • 重新加載配置文件 http://xxxx:8080/reload

使用Jenkins自動(dòng)化

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

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

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

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

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

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

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

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


# 判斷是否存在demo鏡像是否存在
docker images | grep demo &> /dev/null
if [ $? -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:v1
fi

# 重新build后生成鏡像并運(yùn)行容器
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)擊立即構(gòu)建驗(yàn)證一下,如果構(gòu)建失敗可以在控制臺(tái)輸出中查看詳細(xì)構(gòu)建過(guò)程和錯(cuò)誤信息

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


總結(jié)

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

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

相關(guān)文章

  • 使用Docker將容器打成鏡像的方法步驟

    使用Docker將容器打成鏡像的方法步驟

    本文主要介紹了使用Docker將容器打成鏡像的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 使用Docker部署Spring Boot的實(shí)現(xiàn)方法

    使用Docker部署Spring Boot的實(shí)現(xiàn)方法

    這篇文章主要介紹了使用Docker部署Spring Boot的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Docker Compose引用環(huán)境變量的方法示例

    Docker Compose引用環(huán)境變量的方法示例

    在項(xiàng)目中,往往需要在 docker-compose.yml 文件中使用環(huán)境變量來(lái)控制不同的條件和使用場(chǎng)景。本文集中介紹 docker compose 引用環(huán)境變量的方式,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 解決vscode docker插件docker.socket權(quán)限問(wèn)題

    解決vscode docker插件docker.socket權(quán)限問(wèn)題

    本文給大家分享關(guān)于vscode docker插件docker.socket權(quán)限問(wèn)題,文末給大家提到vscode中docker插件無(wú)法連接的問(wèn)題及解決方案,需要的朋友參考下吧
    2021-06-06
  • Linux搭建Docker環(huán)境的詳細(xì)過(guò)程(最新推薦)

    Linux搭建Docker環(huán)境的詳細(xì)過(guò)程(最新推薦)

    Docker從17.03版本之后分為CE(Community Edition: 社區(qū)版)和EE(Enterprise Edition: 企業(yè)版),相對(duì)于社區(qū)版本,企業(yè)版本強(qiáng)調(diào)安全性,但需付費(fèi)使用,這里我們使用社區(qū)版本即可,這篇文章給大家介紹Linux搭建Docker環(huán)境的詳細(xì)過(guò)程,感興趣的朋友一起看看吧
    2025-04-04
  • Docker數(shù)據(jù)卷容器創(chuàng)建及使用方法解析

    Docker數(shù)據(jù)卷容器創(chuàng)建及使用方法解析

    這篇文章主要介紹了Docker數(shù)據(jù)卷容器創(chuàng)建及使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • docker實(shí)現(xiàn)將本地文件復(fù)制到docker容器內(nèi)

    docker實(shí)現(xiàn)將本地文件復(fù)制到docker容器內(nèi)

    這篇文章主要介紹了docker實(shí)現(xiàn)將本地文件復(fù)制到docker容器內(nèi)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Docker部署tenine實(shí)現(xiàn)后端應(yīng)用的高可用與負(fù)載均衡(推薦)

    Docker部署tenine實(shí)現(xiàn)后端應(yīng)用的高可用與負(fù)載均衡(推薦)

    采用Docker部署Tengine和Keepalived,實(shí)現(xiàn)了一種適用于小型應(yīng)用場(chǎng)景的高可用負(fù)載均衡解決方案,本方案需要兩臺(tái)Ubuntu服務(wù)器、Docker軟件以及三個(gè)IP地址,適合需要簡(jiǎn)易而可靠的負(fù)載均衡和高可用性的小型應(yīng)用部署,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Docker?compose啟動(dòng)服務(wù)遇到的問(wèn)題小結(jié)

    Docker?compose啟動(dòng)服務(wù)遇到的問(wèn)題小結(jié)

    這篇文章主要介紹了Docker?compose啟動(dòng)服務(wù)遇到的問(wèn)題小結(jié),這個(gè)是檢驗(yàn)我們的docker?compose掌握程度,因此里面的鏡像沒(méi)有提前拉取,掛載數(shù)據(jù)卷的目錄也沒(méi)有提前創(chuàng)建,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • 如何解決docker鏡像在不同cpu架構(gòu)上運(yùn)行容器報(bào)錯(cuò)問(wèn)題

    如何解決docker鏡像在不同cpu架構(gòu)上運(yùn)行容器報(bào)錯(cuò)問(wèn)題

    文章主要介紹了如何查看本地Docker鏡像的CPU架構(gòu)類型,并提供了解決x86鏡像無(wú)法在ARM CPU上運(yùn)行的問(wèn)題的方法,通過(guò)在Dockerfile中使用`--platform`參數(shù)指定CPU架構(gòu),可以在構(gòu)建鏡像時(shí)選擇正確的版本,從而解決架構(gòu)不匹配的問(wèn)題
    2024-12-12

最新評(píng)論

武安市| 绥化市| 芦山县| 荥经县| 永安市| 蚌埠市| 静安区| 玉林市| 安远县| 泽州县| 普兰县| 怀安县| 驻马店市| 宝坻区| 乌兰察布市| 渭源县| 肇州县| 平邑县| 南部县| 龙井市| 黄冈市| 上虞市| 红安县| 柳江县| 三河市| 内江市| 搜索| 武隆县| 定襄县| 洛隆县| 栾城县| 华坪县| 枞阳县| 江北区| 平南县| 平乐县| 浦县| 平泉县| 宁陕县| 巩义市| 邢台县|