超简单让.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,一经查实,立即删除!

相关文章

ImportError: No module named google.protobuf.internal

conda install -c distributions libprotobuf2.5.0 or sudo apt-get install protobuf

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

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

./include/caffe/util/cudnn.hpp: error: too few arguments to function ‘SetPooling2dDescriptor

https://blog.csdn.net/tianrolin/article/details/71246472 这是由于所使用的cuDNN版本不一致的导致的,作者配置环境是cuDNN 4.0,但是5.0版本后的cuDNN接口有所变化。 解决方法 :将以下几个文件用最新BVLC版本的caffe对应文件替换并重新编译…

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

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

NPOI 导出 excel 性能测试

NPOI 导出 excel 性能测试Intro网上看到很多人说 NPOI 的性能不行,自己写了一个 NPOI 的扩展库,于是想尝试看看 NPOI 的性能究竟怎么样,道听途说始终不如自己动手一试。测试环境测试工具:BenchmarkDotNet v0.11.5EPPlus.Core.Exte…

caffe安装常见问题

https://blog.csdn.net/u012576214/article/details/68947893解决办法是依据出现错误的顺序而给出的,为了方便,可以直接先执行所有解决办法后再安装caffe。 1. ./include/caffe/common.hpp:5:27: fatal error: gflags/gflags.h: No such file or directo…

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

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

ubuntu 通过 海康sdk调用摄像头抓图片

https://blog.csdn.net/ding977921830/article/details/75272384 在本文中我的电脑是使用的Ubuntu16.04 64位,使用工具是QT5.7.1,opencv2.4.9.一、根据电脑的型号下载海康威视的SDK包网址:http://www.hikvision.com/cn/download_61.html。我的…

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

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

ubuntu 文件管理器死机

有时会遇到Ubuntu文件管理器死掉的情况,怎么点击都没有反应,这时只需在终端上运行ps -A | grep nautilus,查找文件管理器nautilus对应的pid,然后sudokillpid就可以关闭文件管理器进程,随便点击一个文件夹就可以重启文件管理器了。…

「云」发展的怎么样了?

周五发了一篇聊中台的文章,《》。有小伙伴给我留言问到,身边好像直接基于「云」做开发的人和企业越来越多了,如何看待「云」的渗透率逐渐走高对我们技术人的影响。对于这点我的观点是,一件事情分工越来越细是我们整个社会向前发展…

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

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

安装distro ./test.sh 找不到路径

https://github.com/torch/distro ./test.sh 显示找不到path, 需要我们在./update.sh之后 source /root/.bashrc

使用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这个术语。这篇论文的地…

Ubuntu 安装 cuda deb 指令 不要自动装9.2

比如安装 9.0 sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.148-1_amd64.deb sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub sudo apt-get update sudo apt-get install cuda 最后一句会自动安装9.2 需要改为: sudo apt-get install cuda-9.0

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个地铁站,离南京东路和外滩半…

[object detection] TypeError: can't pickle dict_values objects

https://github.com/tensorflow/models/issues/4780 If youre using python3 , add list() to category_index.values() in model_lib.py about line 381 as this list(category_index.values()).

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

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

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

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