a.嘗試過自建,併成功了,可是很麻煩,要敲一堆命令,沒法達到全自動化部署的要求。react
b.自建,就算用第三方的鏡像包,感受下載仍是不快,不知道爲何。nginx
哪些:各大雲服務好像都已經有了,由於我用的碼雲作的項目託管,支持碼雲或者自定義git地址的,只有華爲雲和daocloud,最後選擇的是daocloud。git
效果:配置好後,只用選擇手動觸發,填入分支(如:master),而後幾分鐘後,2臺正式服務器,1臺測試服務器,自動部署成功,全程不用動其餘位置。docker
(源碼安全問題不在討論範圍以內)安全
注意,由於是私有項目,請使用ssh協議的地址,如:git@gitee.com:xxx/xxx.git服務器
添加好這些數據後保存。app
在項目列表中,就能夠看見你添加的數據了負載均衡
點擊查看詳情ssh
選擇流程定義->使用Submodules->複製圖中的SSH Keyscurl
去到私有項目中添加公鑰,複製進去就好了。這樣,就完成了。
首先,你須要編寫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,執行就好了。
這個就是執行成功的樣子,若是報錯,自行查看日誌。
首先,若是你以爲安全性有問題,那麼,能夠找到鏡像倉庫,有倉庫鏡像的地址
使用這種方式拉取鏡像部署。
固然,咱們選擇的是直接講主機鏈接上daocloud使用。
添加主機的方式,在集羣裏添加,我這裏就不作演示了。
首先:部署最新版本
容器端口默認80不變,主機端口填寫你要訪問的端口,由於個人是無狀態服務,因此不用添加Volumes,自定義變量說一下,正式環境什麼都不用填
測試環境須要填寫環境變量
ASPNETCORE_ENVIRONMENT Deveplopment
而後當即部署,便可。固然,服務器先要安裝docker
使用第三方鏡像加速:
curl -sSL https://get.daocloud.io/docker | sh
而後訪問對應的外網+端口便可
而後打開每次鏡像更新就自動部署
這是目前項目的部署狀況,2臺API服務作了負載均衡(nginx),一臺測試服務,每次更新最新代碼,填完master,自動發佈到這3臺服務器。很是方便
從公司說要重寫原有的系統,到技術選型(前:react,後:.net core),而後4我的(2前2後)編碼,舊數據導入,內測,到如今上線,從頭至尾,一步一個腳印的完成了開發目標。收穫滿滿。總算能夠鬆一口氣了