• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    Asp.net Core Jenkins Docker實現一鍵化部署的實現

    來源:懂視網 責編:小采 時間:2020-11-27 22:34:43
    文檔

    Asp.net Core Jenkins Docker實現一鍵化部署的實現

    Asp.net Core Jenkins Docker實現一鍵化部署的實現:寫在前面 在前段時間嘗試過用Jenkins來進行asp.net core 程序在IIS上面的自動部署。大概的流程是Jenkins從git上獲取代碼 最開始Jenkins是放在Ubuntu的Docker中,但是由于Powershell執行的原因,就把Jenkins搬到了windows上。因為我們網站的部
    推薦度:
    導讀Asp.net Core Jenkins Docker實現一鍵化部署的實現:寫在前面 在前段時間嘗試過用Jenkins來進行asp.net core 程序在IIS上面的自動部署。大概的流程是Jenkins從git上獲取代碼 最開始Jenkins是放在Ubuntu的Docker中,但是由于Powershell執行的原因,就把Jenkins搬到了windows上。因為我們網站的部

    寫在前面

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

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

    Docker Image

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

    Jenkins安裝

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

    代碼如下: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環境。當容器啟動完成之后,我們可以用命令

    docker exec -it containerid /bin/bash

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

    Jenkins Job

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

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

    然后就是構建命令直接用執行Shell

    #!/bin/bash
    # 獲取短版本號來用Image的版本號
    
    GITHASH=`git rev-parse --short HEAD`
    docker build -t {imagename}:$GITHASH -f {DockerFile-PWD} {鏡像的初始目錄}
    

    這里就是在構建我們的Image了

    然后接下來就是推送當前構建的Image到遠程倉庫,再在構建后去執行遠程連接到需要發布的服務器根據版本號獲取到需要部署的鏡像進行run就行,因為我當前都在測試環境 所以就直接在本地執行鏡像的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

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

    寫在最后

    DockerFile

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

    FROM microsoft/dotnet:2.1-sdk AS build
    WORKDIR /app
    
    # 拷貝所有文件到環境中,并進行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 ./ 把發布好的文件拷貝到鏡像中
    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 #時區的本地化
    RUN echo 'Asia/Shanghai' >/etc/timezone
    ENTRYPOINT ["dotnet", "project.dll"] # 啟動程序
    

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

    docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop #停掉狀態為Exited的容器
    docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm #刪除狀態為Exited的容器
    docker images|grep none|awk '{print $3 }'|xargs docker rmi # 刪除tag為none的鏡像
    
    
     docker rmi $(docker images | grep imagename | awk '{print $3}') #刪除鏡像名稱為imagename的鏡像 (只能針對沒有被用的Image)
    

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    Asp.net Core Jenkins Docker實現一鍵化部署的實現

    Asp.net Core Jenkins Docker實現一鍵化部署的實現:寫在前面 在前段時間嘗試過用Jenkins來進行asp.net core 程序在IIS上面的自動部署。大概的流程是Jenkins從git上獲取代碼 最開始Jenkins是放在Ubuntu的Docker中,但是由于Powershell執行的原因,就把Jenkins搬到了windows上。因為我們網站的部
    推薦度:
    標簽: 實現 do asp
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 久久国产精品-久久精品| 91久久精品无码一区二区毛片| 精品福利一区二区三| 亚欧无码精品无码有性视频| 久久国产精品99久久久久久老狼| 亚洲欧美日韩精品久久亚洲区| 亚洲精品视频在线| 成人午夜视频精品一区| 中文字幕精品久久久久人妻| 国产精品亚洲视频| 久久精品9988| 国产精品区免费视频| 亚洲综合国产精品第一页 | 亚洲精品无码久久千人斩| 国产欧美精品专区一区二区 | 国产综合精品蜜芽| 中文字幕精品一区影音先锋 | 国产精品无码永久免费888 | 国内精品伊人久久久久网站| 久久精品国产91久久综合麻豆自制| 久久精品水蜜桃av综合天堂| 夜夜爽一区二区三区精品| 精品无码国产污污污免费网站国产| 思思99热在线观看精品| 国产精品久久久久久影院| 国产麻豆精品久久一二三| 亚洲国产精品成人久久| 亚洲日韩国产AV无码无码精品| 欧美 日韩 精品 另类视频| 国产三级精品三级| 国产综合精品久久亚洲 | 午夜精品在线观看| 欧美精品天天操| 91大神精品全国在线观看| 91精品视频观看| 国产高清在线精品一本大道| 国产精品狼人久久久久影院| 国产精品99久久久久久宅男| 国产精品男男视频一区二区三区| 国产精品爱搞视频网站| 精品精品国产高清a毛片|