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

使用第三方容器服务,自动化部署.Net Core的更多相关文章

  1. 基于云原生DevOps服务自动化部署前端项目学习总结

    本文主要以部署前端Vue项目为例,讲述了如何基于云原生DevOps服务自动化部署前端项目~从开发完成到线上环境,我们只需提交代码即可~ 一.引言 作为一名开发人员,日常工作中我们除了需要负责代码的开发 ...

  2. 阿里云容器服务与ASP.NET Core部署:用 docker secrets 保存 appsettings.Production.json

    这是我们使用阿里云容器服务基于 docker 容器部署 asp.net core 应用遇到的另一个问题 —— 如果将包含敏感信息的应用配置文件 appsettings.Production.json ...

  3. Linux文档整理之【Jenkins+Docker自动化部署.Net Core】

    这次整理的文档是Jenkins+Docker实现自动化部署,很早之前就写的,今天有时间就搬到博客园做个记录. Jenkins是基于Java开发的一种持续集成工具,主要用于持续.自动的构建/测试软件等相 ...

  4. Docker容器技术-自动化部署

    一.用Chef自动化部署Docker 1.为什么需要自动化部署? Docker引擎需要配置很多参数(cgroups.内存.CPU.文件系统等) 识别Docker容器运行在哪个宿主机上 耗时且容易出错, ...

  5. 最详细之教你Jenkins+github自动化部署.Net Core程序到Docker

    环境 centos7.9,.NET5 一.Jenkins搭建 1)下载Jenkins的war包 在\home目录建一个jenkins目录放jenkins的包 #进入\home目录 cd \home # ...

  6. 品尝阿里云容器服务:初步尝试ASP.NET Core Web API站点的Docker自动化部署

    部署场景是这样的,我们基于 ASP.NET Core 2.0 Preview 1 开发了一个用于管理缓存的 Web API ,想通过阿里云容器服务基于 Docker 部署为内网服务. 在这篇博文中分享 ...

  7. Knative 实践:从源代码到服务的自动化部署

    通过之前的文章,相信大家已经熟悉了 Serving.Eventing 以及 Tekton.那么在实际使用中,我们往往会遇到一些复杂的场景,这时候就需要各个组件之间进行协作处理.例如我们提交源代码之后是 ...

  8. [持续集成]Jenkins 自动化部署 Maven 工程

    一.Jenkins 持续部署原理图 基础服务: 1 SVN 服务 SVN是Subversion的简称,是一个开放源代码的版本控制系统.说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的 ...

  9. Knative 应用在阿里云容器服务上的最佳实践

    作者|元毅 阿里云智能事业群高级开发工程师 相信通过前面几个章节的内容,大家对 Knative 有了初步的体感,那么在云原生时代如何在云上玩转 Knative?本篇内容就给你带来了 Knative 应 ...

随机推荐

  1. java编译器

    编译: .java变成.class        前端编译   Sun javac Eclipse ECJ .class变成机器码      运行期编译 等HostSpot VM c1,c2 .jav ...

  2. Supervisor: 进程控制系统

    Supervisor: 进程控制系统 概述:Supervisor是一个 Client/Server模式的系统,允许用户在类unix操作系统上监视和控制多个进程,或者可以说是多个程序. 它与launch ...

  3. BAT脚本编写教程(比较易懂和全面)

    这篇文章主要介绍了BAT脚本编写教程,比较易懂和全面.适合有一定编程基础的人   作者不详.敬意! echo.@.call.pause.rem(小技巧:用::代替rem)是批处理文件最常用的几个命令, ...

  4. selenium+python自动化84-chrome手机wap模式(登录淘宝页面)

    前言 chrome手机wap模式登录淘宝页面,点击验证码无效问题解决. 切换到wap模式,使用TouchActions模块用tap方法触摸 我的环境 chrome 62 chromedriver 2. ...

  5. uva-208-枚举-并查集

    题意: 给你一个图,从1到指点的点有多少种不同的路径,用了并查集剪枝,如果当前节点的根不是指定的节点,直接返回,会超时 time limit了俩次,wa了俩次,PE俩次 #include <io ...

  6. oracle创建表空间,表及用户

    oracle要创建表要首先创建表空间,当然默认是有表空间的.而mysql创建表时,会自动创建表空间,myisam会自动建三个文 件.MYD,.MYI,.frm.innodb呢,如果没有配置独立表空间的 ...

  7. 使用django + celery + redis 异步发送邮件

    参考:http://blog.csdn.net/Ricky110/article/details/77205291 环境: centos7  +  python3.6.1 + django2.0.1  ...

  8. delphi Firemonkey ListBoxItem自绘

    delphi Firemonkey ListBoxItem自绘 ListBoxItem1的事件ListBoxItem1Paint procedure TForm1.ListBoxItem1Paint( ...

  9. J2SE 8的注解

    1. 注解概念 (1) 注解格式 modifiers @interface AnnotationName { type elementName(); type elementName() defaul ...

  10. centos7 防火墙配置

    firewall-cmd --zone=public --add-port=80/tcp --permanentfirewall-cmd --zone=public --add-port=8080/t ...