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