超简单让.NET Core开发者快速拥有CI/CD的能力-Docker版本

超简单让.NET Core开发者快速拥有CI/CD的能力-Docker版本

前言

上一篇自动化测试,全面且详细的介绍了从零开始到发布版本的步骤,这是传统的方式,本次为大家带来的是如何在5分钟内使用上docker进行CI/CD,毕竟现在的容器化如火如荼,本示例是基于CentOS-7系统,在示例中, jenkins 和部署 .NET Core 应用程序,都使用 docker 来完成。

首先是安装docker

在服务器上执行下面的命令,安装 docker

yum install docker

安装完成后,执行命令 docker --version ,输出版本号证明安装成功。

Docker version 19.03.4, build 9013bf583a

拉取并部署jenkins

紧接着,马上拉取 jenkins 的镜像

docker pull jenkins/jenkins

拉取成功后,执行容器部署,输入下面的命令

docker run --name myjenkins \	-u root \	-d \	--rm \	-v /var/run/docker.sock:/var/run/docker.sock \	-v /usr/bin/docker:/usr/bin/docker \	-v /var/jenkins_home:/var/jenkins_home \	-p 8080:8080 -p 50000:50000 \	jenkins/jenkins:lts

部署完成后,可能你需要手动开启防火墙端口 8080 后才可以在外部浏览器中访问jenkins的站点

开启防火墙端口8080

输入下面的命令,开启8080端口

firewall-cmd --zone=public --add-port=8080/tcp --permanent	
firewall-cmd --reload

好了,现在我们可以通过下面的地址访问jenkins的web管理控制台了

http://{你的IP地址}:8080

如果你出现了下面的图,不要慌张,简单执行下面两个步骤就可以解决问题了。

640?wx_fmt=png

修改步骤

1、修改/var/jenkinshome/updates/default.json,搜索 google.com ,改为 baidu.com 就可以了 2、修改/var/jenkinshome/hudson.model.UpdateCenter.xml,这个文件是jenkins下载插件的默认源地址,将:https://updates.jenkins.io/update-center.json 中的 https 修改为 http,然后执行命令 docker restart myjenkins 重启 jenkins 实例就可以了。

为.NET Core 编写Dockerfile文件

Visual Studio 已经为我们集成了docker的支持,所以基本上我们是不需要编写Dockerfile文件的,只要鼠标右键点击项目,添加docker支持即可

640?wx_fmt=png

这里我选择Linux版本

640?wx_fmt=png

生成的Dockerfile文件如下

FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base	
WORKDIR /app	
EXPOSE 80	
FROM microsoft/dotnet:2.2-sdk AS build	
WORKDIR /src	
COPY ["src/Ron.Blogs/Ron.Blogs.csproj", "src/Ron.Blogs/"]	
RUN dotnet restore "src/Ron.Blogs/Ron.Blogs.csproj"	
COPY . .	
WORKDIR "/src/src/Ron.Blogs"	
RUN dotnet build "Ron.Blogs.csproj" -c Release -o /app	
FROM build AS publish	
RUN dotnet publish "Ron.Blogs.csproj" -c Release -o /app	
FROM base AS final	
WORKDIR /app	
COPY --from=publish /app .	
ENTRYPOINT ["dotnet", "Ron.Blogs.dll"]

这里生成的文件其实是有点小问题的,因为我们是在项目中生成的Dockerfile文件,而上面的脚本中,COPY 的命令执行的目录却是从 /src 开始,如果我们直接执行 docker build ,会提示找不到该项目文件 src/Ron.Blogs/Ron.Blogs.csproj,正确的解决方法是将Dockerfile文件移动到src同级目录,即解决方案根目录下,如下图

640?wx_fmt=png

开始构建容器化实例

因为我们将在容器中编译.NET Core 程序,所以本地服务器不需要安装 .NET Core SDK。接下来的事情就变得非常简单了,上jenkins去创建一个任务,然后作一些简单的配置后就开始构建。

首先创建任务

640?wx_fmt=png

配置git仓库地址

640?wx_fmt=png

配置执行shell命令

640?wx_fmt=png

输入下面的脚本

docker build  -t blogs .	
docker run --rm -d --name blogs -p 15002:80 blogs	
echo "success"

就这样,一个完整的流程走完了,现在访问容器实例地址:http://172.16.1.202:15002/api/blog/detail/1

640?wx_fmt=png

完美运行成功!

注意事项

上面的脚本在第一次运行的时候没有问题,但是在第二次构建的时候,将会提示实例名称 blogs 已存在,我们需要修改一下构建脚本,加入 docker stop blogs

docker build  -t blogs .	
docker stop blogs	
docker run --rm -d --name blogs -p 15002:80 blogs	
echo "success"

结束语

上面就是本次的快速拥抱CI/CD的全部内容,看完点赞,保持好习惯!

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313093.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET Core 又一杀器! Web Blazor框架横空出世!

多年来,Javascript(及其子框架)已在浏览器中运行DOM(文档对象模型),并且掌握了脚本知识才能真正操作客户端UI。大约2年前,所有这些都随着Web Assembly的引入而发生了变化-Web Assembly允许在客户…

.NET Conf 2019 今天在上海开幕,图片直播地址

.NET Conf 2019 在上海开幕,全程提供图片直播:https://vzan.com/live/tvchat-1099246581下午的分会场内容如下:上午有个直播 ,请阅读原文访问https://vzan.com/live/tvchat-1099246581 。

Asp.Net Core 单元测试正确姿势

背景ASP.NET Core 支持依赖关系注入 (DI) 软件设计模式,并且默认注入了很多服务,具体可以参考 官方文档, 相信只要使用过依赖注入框架的同学,都会对此有不同深入的理解,在此无需赘言。然而,在引入 IOC 框架之后&#x…

程序员与「中台」的爱恨交错

大家好,我是Z哥。这篇文章比较长,有5200字,不过希望你能耐心看完,特别是程序员。中台这个词,最近两年特别火,它的爆发源于2015年张勇在阿里发出的内部信中提到的“大中台,小前台”战略。随后吸引…

ML.NET 1.4 发布,跨平台机器学习框架

ML.NET 是一个面向 .NET 开发人员的开源和跨平台机器学习框架,它包括 Model Builder 和 CLI(命令行接口),让使用自动机器学习(AutoML)构建自定义机器学习模型变得更容易。1.4 版本已经发布了,以下是本次更新的一些亮点:基于 GPU 支…

使用ASP.NET Core 3.x 构建 RESTful API - 2. 什么是RESTful API

1. 使用ASP.NET Core 3.x 构建 RESTful API - 1.准备工作什么是REST REST一词最早是在2000年,由Roy Fielding在他的博士论文《Architectural Styles and the Design of Network-based Software Architecture》中提出的。他在本文中创造了REST这个术语。这篇论文的地…

Visual Studio Online 的 FAQ:iPad 支持、自托管环境、Azure 账号等

iPad 支持 目前,Web 版 VS Code 只支持基于 Chromium 的浏览器,还不支持 iPad 上的浏览器。但对于 Safari 的支持,是 Visual Studio Online 团队的一件高优先级的任务。更多详情,可以关注: https://github.com/Microso…

2019 .NET China Conf之我逛魔都

趁着参加首届.NET开发者峰会之际,我也是第一次到上海,因此也趁机逛了一下大魔都,和你分享一波我在魔都拍的照片组。酒店所在地:邮电新村地铁站附近为何选择这里?因为离会场酒店6个地铁站,离南京东路和外滩半…

参加首届中国 .NET 开发者峰会有感

参加首届中国 .NET 开发者峰会有感Intro很高兴能够有机会参加首届中国 .NET 开发者峰会,与从全国各地赶来上海参加活动的 .NETer 一起参与这空前的 .NET 的盛会。大会有许多从外地过来参加的开发者们,也有些讲师也是从外地赶过来为我们分享,特…

推荐一款神器-VBAC#代码编辑管理器

网名:liucqa,OFFICE开发领域真大牛,比ExcelHome所有版主和所有出OFFICE开发类书籍的人都要牛的人,出品了它的大作,给大家推荐使用。特色功能:C#&VBA代码格式化/代码收藏/高亮语法详细介绍说明如下&…

【.NET Core 3.0】 46 ║ 授权认证:自定义返回格式

前言哈喽大家好,马上就要年末了,距离新的一年,只有50天了,春节是75天。在这个时节内,天气逐渐变凉,但是大家的心肯定很热吧,因为发生了两件大事:1、双十一买买买,在这个让…

.NET Core 如何生成真正的ICO图标

点击上方蓝字关注“汪宇杰博客”导语前一阵我终于完成了博客系统动态生成favicon的功能。众所周知,favicon肯定有一个ico格式的图标,其余可以用 png manifest 的方式输出。然而这个ICO格式让我小收福报,今天就给大家分享一下解决办法。.NET自…

Visual Studio Online 东半球首秀,亮相 .NET Conf 2019 中国峰会

佷高兴能参加 .NET Conf 并演讲。看到 NET 社区这么活跃,也是非常开心!这次我演讲的主题是《Visual Studio Code —— .NET 开发利器》。找找我在哪?更多关于 Visual Studio Online 的四种开发模式,可以阅读这篇文章:最…

.NET Core 3.0 部署在docker上运行

自从.NET Core3.0发布之后,写了几篇关于.NET Core 3.0的文章,有助于你快速入门.NET Core3.0。本篇文章主要讲解如何一步步创建一个mvc项目,然后发布并部署在Docker上运行。需要你本地有docker环境1.创建一个站点创建一个ASP.NET Core Web应用…

2019 .NET China Conf:路一直都在,社区会更好

这个周末,我从成都飞到了上海参加了首届由社区组织而非官方(比如Microsoft)组织的.NET开发者峰会(.NET Conf)。为此,我特意请了两天的假(周五周六,对,我们是大小周&#…

“开源、共享、创新”, 中国最具前景开发者峰会落幕魔都

点击蓝字关注我们作者:张善友编辑:吴珊珊校正:潘淳、许豪、刘腾飞、朱兴亮、郑和阳、张潇、韩骏问卷制作:杨乐2019年,注定会是 .NET Core 社区发展的关键一年,诸多重大事件在这一年发生!正如大家…

GitHub 2019年度报告,用户超4000万

GitHub 发布了 2019 年年度报告《The State of the Octoverse》,下边来看看一些主要数据。全球用户超过 4 千万 目前 GitHub 上有超过 4000 万开发人员,其中有 80% 来自美国以外的地区。去年一年里有 1000 万新加入的开发者,2019 …

github 创建文件夹

https://blog.csdn.net/zhaomengszu/article/details/80354929 在我们不适用本地Git的情况下,我们怎么在网页上创建类似下图一样的文件夹呢 四步方法: 第一步:找到新增按钮 第二步:输入文件夹名,你想要用的文件夹名字。 第三步…

ML.NET 终于在Jupyter NoteBook 上跑起来了

对.NETer来说,刚结束的.NET Conf 2019是非常难忘的,毕竟这个个人觉得比微软在中国办的大会更加清真,当然现阶段.NET 已经不单跑在Windows的一项技术了,它可以跑在Linux/macOS/iOS/Android/IoT等,也可以融合当今最热门的…

2019.NET Conf China,.NET之崛起,已势不可挡

本文来自DotNET技术圈作者:邹溪源一、背景当今时代,气象更新,技术飞速发展。当今时代,开发者大概是最优秀的群体。每一位开发者,无不奋勇向前,努力追寻时代的步伐,以大无畏的精神迎接挑战&#…