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

Asp.net Core Jenkins Docker實現(xiàn)一鍵化部署的實現(xiàn)

 更新時間:2019年01月18日 15:10:51   作者:RstarYan  
這篇文章主要介紹了Asp.net Core Jenkins Docker實現(xiàn)一鍵化部署的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

寫在前面

在前段時間嘗試過用Jenkins來進行asp.net core 程序在IIS上面的自動部署。大概的流程是Jenkins從git上獲取代碼

最開始Jenkins是放在Ubuntu的Docker中,但是由于Powershell執(zhí)行的原因,就把Jenkins搬到了windows上。因為我們網(wǎng)站的部署需要停掉IIS站點,所以需要Powershell來遠(yuǎn)程操作服務(wù)器(上傳文件,停止站點,啟動站點),也很順利的利用WinRM+Powershell腳本實現(xiàn)了上面的功能,但是最后在實際使用中發(fā)現(xiàn),腳本停止站點偶爾會有是假狀態(tài),進行Copy文件還總是會因為占用而失敗,所以還是只能手動去停止站點,這樣就沒有達(dá)到一鍵化的目的,所以就有了用Docker來鏡像。

Docker Image

.net core對Docker是大力支持了,在Core之前,我就特別羨慕我在Docker中使用一些工具的體驗--一行指令就可以工具自動安全完整了,不用費力進行環(huán)境配置,而且對系統(tǒng)的入侵特別少。所以Core出來之后,我就一直會嘗試在Docker中運行Core程序 但是一直沒敢上正式環(huán)境,正好現(xiàn)在遇到自動化部署的問題,就打算先從測試環(huán)境開始,把Docker環(huán)境一步步的能應(yīng)用到正式環(huán)境上。大概的流程是這樣的:

Jenkins安裝

Docker安裝Jenkins可以直接到store.docker.com上搜索Jenkins的鏡像然后run容器就行了唯一要注意的是要讓容器中的Jenkins共用宿主機的Docker環(huán)境,命令如下

復(fù)制代碼 代碼如下:
docker run --memory 1.5G  --name ContainerName -p 18181:8080 -p 50000:50000 -u root -d --env JAVA_OPTS="-Xms256m -Xmx512m  -XX:MaxNewSize=256m"  -v /var/run/docker.sock:/var/run/docker.sock  -v /usr/bin/docker:/usr/bin/docker  -v /home/buxiaoxia/software/jenkins:/var/jenkins_home -v /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 jenkins/jenkins:lts

后面的-v是用來指定宿主機的文件/文件夾掛載到宿主機的指定路徑上面,這里主要是用來掛載宿主機的Docker環(huán)境。當(dāng)容器啟動完成之后,我們可以用命令

docker exec -it containerid /bin/bash

進入容器中,執(zhí)行docker ps的命令試試是否能執(zhí)行成功。

Jenkins Job

當(dāng)容器運行好之后,進行一些初始化的工作之后,我們就可以開始建立的部署Job了

源代碼管理中配置我們Git的地址

然后就是構(gòu)建命令直接用執(zhí)行Shell

#!/bin/bash
# 獲取短版本號來用Image的版本號

GITHASH=`git rev-parse --short HEAD`
docker build -t {imagename}:$GITHASH -f {DockerFile-PWD} {鏡像的初始目錄}

這里就是在構(gòu)建我們的Image了

然后接下來就是推送當(dāng)前構(gòu)建的Image到遠(yuǎn)程倉庫,再在構(gòu)建后去執(zhí)行遠(yuǎn)程連接到需要發(fā)布的服務(wù)器根據(jù)版本號獲取到需要部署的鏡像進行run就行,因為我當(dāng)前都在測試環(huán)境 所以就直接在本地執(zhí)行鏡像的run了。

docker stop {containername} #停掉原來的容器
docker rm {containername}  #刪除原來
docker run -p 9526:80 -d -e ASPNETCORE_ENVIRONMENT='Development' -v /Path/Path/Logs:/app/App_Data/Logs --restart always --name {containername} {imagename}:$GITHASH

這樣就基本實現(xiàn)了一鍵化部署了,當(dāng)然還是有很多需要優(yōu)化的地方,接下來我在使用的過程中如果遇到用著不順的或者是你們有不順的地方我們在來解決下。

寫在最后

DockerFile

最開始構(gòu)建asp.net core 2.1版本的鏡像的時候,運行總是會找不到dotnet sdk,最后就只有在DockerFile中添加了一層 文件內(nèi)容如下

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app

# 拷貝所有文件到環(huán)境中,并進行restore,build and release
COPY . .
RUN dotnet restore
RUN dotnet build
WORKDIR /app/src/Path
RUN dotnet publish -c Release -o out
 


FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
WORKDIR /app
COPY --from=build /app/src/Path/out ./ 把發(fā)布好的文件拷貝到鏡像中
Copy --from=build /app/src/Path/bin/Debug/netcoreapp2.1/XXX.xml ./ #把Swagger使用的xml拷貝到目錄中

EXPOSE 80
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #時區(qū)的本地化
RUN echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["dotnet", "project.dll"] # 啟動程序

這種方式有個問題就是會有一些無用的images 分享的指令來進行清除

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop #停掉狀態(tài)為Exited的容器
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm #刪除狀態(tài)為Exited的容器
docker images|grep none|awk '{print $3 }'|xargs docker rmi # 刪除tag為none的鏡像


 docker rmi $(docker images | grep imagename | awk '{print $3}') #刪除鏡像名稱為imagename的鏡像 (只能針對沒有被用的Image)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • asp.net在Repeater嵌套的Repeater中使用復(fù)選框詳解

    asp.net在Repeater嵌套的Repeater中使用復(fù)選框詳解

    這篇文章主要介紹了asp.net在Repeater嵌套的Repeater中使用復(fù)選框,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • .Net?Core?Aop之IResourceFilter的具體使用

    .Net?Core?Aop之IResourceFilter的具體使用

    本文主要介紹了.Net?Core?Aop之IResourceFilter的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • ASP.NET中如何實現(xiàn)回調(diào)

    ASP.NET中如何實現(xiàn)回調(diào)

    這篇文章主要為大家詳細(xì)介紹了ASP.NET中如何實現(xiàn)回調(diào)操作,感興趣的小伙伴們可以參考一下
    2016-04-04
  • .NET 中的高性能隊列 Channel詳解

    .NET 中的高性能隊列 Channel詳解

    Channel<T>是.NET中一個功能強大且靈活的高性能隊列,它支持多線程并發(fā)、異步編程、容量控制等多種特性,非常適合用于處理復(fù)雜的數(shù)據(jù)傳遞和并發(fā)處理任務(wù),本文介紹.NET 中的高性能隊列 Channel,感興趣的朋友一起看看吧
    2024-07-07
  • ASP.NET MVC格式化日期

    ASP.NET MVC格式化日期

    這篇文章介紹了ASP.NET MVC格式化日期的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 發(fā)布一個基于TokyoTyrant的C#客戶端開源項目

    發(fā)布一個基于TokyoTyrant的C#客戶端開源項目

    目前在網(wǎng)上關(guān)于TokyoCabinet(以下簡稱TC)和TokyoTyrant(以下簡稱TT)的資料已相對豐富了,但在.NET平臺上的客戶端軟件卻相對匱乏,因為做Discuz!NT企業(yè)版的關(guān)系,兩個月前開始接觸TC和TT,開始寫相關(guān)的客戶端代碼。
    2010-07-07
  • MVC4制作網(wǎng)站教程第三章 添加用戶組操作3.2

    MVC4制作網(wǎng)站教程第三章 添加用戶組操作3.2

    這篇文章主要為大家詳細(xì)介紹了MVC4制作網(wǎng)站教程,添加用戶組功能的實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • .net中如何以純二進制的形式在內(nèi)存中繪制一個對象

    .net中如何以純二進制的形式在內(nèi)存中繪制一個對象

    這篇文章主要介紹了如何以純二進制的形式在內(nèi)存中繪制一個對象,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • asp.net使用DataTable構(gòu)造Json字符串的方法

    asp.net使用DataTable構(gòu)造Json字符串的方法

    這篇文章主要介紹了asp.net使用DataTable構(gòu)造Json字符串的方法,涉及asp.net字符串序列化、遍歷及構(gòu)造等操作技巧,需要的朋友可以參考下
    2015-12-12
  • ASP.NET文本框密碼賦默認(rèn)值的方法

    ASP.NET文本框密碼賦默認(rèn)值的方法

    本文主要介紹了ASP.NET文本框密碼賦默認(rèn)值的方法,代碼簡單易懂,需要的朋友可以看下
    2016-12-12

最新評論

文水县| 雅安市| 瓦房店市| 松溪县| 静海县| 浦东新区| 桓台县| 剑川县| 平武县| 邹城市| 沭阳县| 阳高县| 山丹县| 郴州市| 萝北县| 毕节市| 南丰县| 城市| 东莞市| 崇明县| 诏安县| 湘西| 南江县| 武功县| 洮南市| 丹棱县| 巴彦淖尔市| 宜君县| 集安市| 巴南区| 台南县| 英德市| 长岛县| 莆田市| 揭阳市| 界首市| 玉林市| 乌鲁木齐市| 米易县| 大余县| 樟树市|