使用第三方容器服務,自動化部署.Net Core

 

 

 

1.爲何用第三方,而不自建,有哪些第三方,最後實現的效果

  a.嘗試過自建,併成功了,可是很麻煩,要敲一堆命令,沒法達到全自動化部署的要求。react

  b.自建,就算用第三方的鏡像包,感受下載仍是不快,不知道爲何。nginx

  哪些:各大雲服務好像都已經有了,由於我用的碼雲作的項目託管,支持碼雲或者自定義git地址的,只有華爲雲和daocloud,最後選擇的是daocloud。git

  效果:配置好後,只用選擇手動觸發,填入分支(如:master),而後幾分鐘後,2臺正式服務器,1臺測試服務器,自動部署成功,全程不用動其餘位置。docker

2.第一步接入私有的git地址

  (源碼安全問題不在討論範圍以內)安全

       

  注意,由於是私有項目,請使用ssh協議的地址,如:git@gitee.com:xxx/xxx.git服務器

       添加好這些數據後保存。app

  在項目列表中,就能夠看見你添加的數據了負載均衡

 

 

  點擊查看詳情ssh

選擇流程定義->使用Submodules->複製圖中的SSH Keyscurl

去到私有項目中添加公鑰,複製進去就好了。這樣,就完成了。

3.構建鏡像

  首先,你須要編寫dockerfile,固然.net core很簡單,直接使用vs 2017添加docker支持就好了。

  添加完畢後

  點擊默認構建任務

填對對應的dockerfile的路徑(若是實在填不對,能夠複製dockerfile出來,而後使用雲端dockerfile)

這是個人dockerfile

FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80

#設置時區
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY *.sln ./
COPY Edu.Api/Edu.Api.csproj Edu.Api/
COPY Edu.Application.Model/Edu.Application.Model.csproj Edu.Application.Model/
COPY Edu.Domain/Edu.Domain.csproj Edu.Domain/
COPY EStart.Infrastructure/EStart.Infrastructure.csproj EStart.Infrastructure/
COPY Edu.Application/Edu.Application.csproj Edu.Application/
COPY EStart.DataBase.EF/EStart.DataBase.EF.csproj EStart.DataBase.EF/
COPY EStart.Interface/EStart.Interface.csproj EStart.Interface/
COPY EStart.DataBase.Event.Domian/EStart.DataBase.Event.Domian.csproj EStart.DataBase.Event.Domian/
COPY Edu.BootStrapper/Edu.BootStrapper.csproj Edu.BootStrapper/
RUN dotnet restore
COPY . .
WORKDIR /src/Edu.Api
RUN dotnet build -c Release -o /app

FROM build AS publish
RUN dotnet publish -c Release -o /app



FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "Edu.Api.dll"]

  給你們參考一下。

  而後選擇右上角的手動觸發,填入Git分支的名字,如master,執行就好了。

 

這個就是執行成功的樣子,若是報錯,自行查看日誌。

4.部署鏡像,使用daocloud添加主機後部署

  首先,若是你以爲安全性有問題,那麼,能夠找到鏡像倉庫,有倉庫鏡像的地址

使用這種方式拉取鏡像部署。

固然,咱們選擇的是直接講主機鏈接上daocloud使用。

添加主機的方式,在集羣裏添加,我這裏就不作演示了。

首先:部署最新版本

 

 

容器端口默認80不變,主機端口填寫你要訪問的端口,由於個人是無狀態服務,因此不用添加Volumes,自定義變量說一下,正式環境什麼都不用填

測試環境須要填寫環境變量

ASPNETCORE_ENVIRONMENT  Deveplopment

 

 

而後當即部署,便可。固然,服務器先要安裝docker

使用第三方鏡像加速:

curl -sSL https://get.daocloud.io/docker | sh

 

而後訪問對應的外網+端口便可

而後打開每次鏡像更新就自動部署

 

 

這是目前項目的部署狀況,2臺API服務作了負載均衡(nginx),一臺測試服務,每次更新最新代碼,填完master,自動發佈到這3臺服務器。很是方便

 

End:感想

從公司說要重寫原有的系統,到技術選型(前:react,後:.net core),而後4我的(2前2後)編碼,舊數據導入,內測,到如今上線,從頭至尾,一步一個腳印的完成了開發目標。收穫滿滿。總算能夠鬆一口氣了

相關文章
相關標籤/搜索