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. python的高阶函数(map,reduce,filter)

    Map函数 Map()函数接受两个参数,第一个参数是函数,第二个参数是序列(list,tuple),map将函数依次作用到序列上的每一个元素上,并发结果作为新的list返回 其中map的第一个参数的函 ...

  2. 经典算法 BFPRT算法详解

    内容: 1.原始问题     =>  O(N*logN) 2.BFPRT算法    => O(N) 1.原始问题 问题描述:给你一个整型数组,返回其中第K小的数 普通解法: 这道题可以利用 ...

  3. [Flutter] TextField 中只允许输入合法的小数

    的Flutter的TextField中,我们可以通过设置inputFormatters来过滤和限制输入的内容. 下面是一个自定义的 TextInputFormatter,可以限制用户只能输入有效的整数 ...

  4. selenium自动化测试遇到的问题积累--持续积累中

    引言: 在做UI自动化测试过程中,总是会遇到各种问题,而解决问题总是会花费一些时间和心思,但是解决后对于自己就是一种成长,持续积累,当可能遇到的问题都被你遇到过,并且都知道解决办法,这就是一种经验的价 ...

  5. 使用MATPLOTLIB 制图(散点图,热力图)

    import numpy as np import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv('D:\\myfil ...

  6. requests bs4 爬取 资讯 图片

    #!/usr/bin/env python # Version = 3.5.2 # __auth__ = '无名小妖' import requests from bs4 import Beautifu ...

  7. python, Django csrf token的问题

    环境 Window 7 Python2.7 Django1.4.1 sqlite3 问题 在使用Django搭建好测试环境后,写了一个提交POST表单提交留言的测试页面. 如图: 填写表单,点击“提交 ...

  8. spring cloud: eureka搭建

    1. 添加pom 依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId&g ...

  9. 控制html元素的隐藏问题

    控制元素隐藏的方式,有display:none.visibility:hidden以及不透明度设置. 一.display:none 被隐藏的元素,在页面中不占位,空出的位置会被相邻的元素占用. < ...

  10. OpenCv 人脸识别 基础

    #include <opencv2\opencv.hpp> #include <iostream> using namespace std; int main() { // 摄 ...