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

 

 

 

1.为什么用第三方,而不自建,有哪些第三方,最后实现的效果

  a.尝试过自建,并成功了,但是很麻烦,要敲一堆命令,无法达到全自动化部署的要求。

  b.自建,就算用第三方的镜像包,感觉下载还是不快,不知道为什么。

  哪些:各大云服务好像都已经有了,因为我用的码云做的项目托管,支持码云或者自定义git地址的,只有华为云和daocloud,最后选择的是daocloud。

  效果:配置好后,只用选择手动触发,填入分支(如:master),然后几分钟后,2台正式服务器,1台测试服务器,自动部署成功,全程不用动其他位置。

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

  (源码安全问题不在讨论范围之内)

       

  注意,因为是私有项目,请使用ssh协议的地址,如:git@gitee.com:xxx/xxx.git

       添加好这些数据后保存。

  在项目列表中,就可以看见你添加的数据了

 

 

  点击查看详情

选择流程定义->使用Submodules->复制图中的SSH Keys

去到私有项目中添加公钥,复制进去就行了。这样,就完成了。

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后)编码,旧数据导入,内测,到现在上线,从头到尾,一步一个脚印的完成了开发目标。收获满满。总算可以松一口气了

 

posted @ 2018-07-03 17:05  Ambre  阅读(609)  评论(1编辑  收藏  举报