ibcadmin 发表于 2019-11-8 09:55:33

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

<p>超简朴让.NET Core开辟者快速拥有CI/CD的本领-Docker版本</p>
<h1 id="前言">前言</h1>
<p>上一篇主动化测试,全面且详细的先容了从零开始到发布版本的步调,这是传统的方式,本次为各人带来的是怎样在5分钟内利用上docker举行CI/CD,毕竟现在的容器化风起云涌,本示例是基于CentOS-7体系,在示例中, jenkins 和摆设 .NET Core 应用步调,都利用 docker 来完成。</p>
<h1 id="起首是安装docker">起首是安装docker</h1>
<p>在服务器上实行下面的下令,安装 docker</p>
<code>yum install docker</code>
<p>安装完成后,实行下令 docker --version ,输出书籍号证实安装乐成。</p>
<code>Docker version 19.03.4, build 9013bf583a</code>
<h1 id="拉取并摆设jenkins">拉取并摆设jenkins</h1>
<p>紧接着,立刻拉取 jenkins 的镜像</p>
<code>docker pull jenkins/jenkins</code>
<p>拉取乐成后,实行容器摆设,输入下面的下令</p>
<code>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</code>
<p>摆设完成后,可能你须要手动开启防火墙端口 8080 后才可以在外部欣赏器中访问jenkins的站点</p>
<h1 id="开启防火墙端口8080">开启防火墙端口8080</h1>
<p>输入下面的下令,开启8080端口</p>
<code>firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload</code>
<p>好了,现在我们可以通过下面的地址访问jenkins的web管理控制台了</p>
<code>http://{你的IP地址}:8080</code>
<p>如果你出现了下面的图,不要张皇,简朴实行下面两个步调就可以管理标题了。</p>
<p></p>
<h2 id="修改步调">修改步调</h2>
<p>1、修改/var/jenkins_home/updates/default.json,搜索 google.com ,改为 baidu.com 就可以了<br />
2、修改/var/jenkins_home/hudson.model.UpdateCenter.xml,这个文件是jenkins下载插件的默认源地址,将:<a href="https://updates.jenkins.io/update-center.json" >https://updates.jenkins.io/update-center.json</a> 中的 https 修改为 http,然后实行下令 docker restart myjenkins 重启 jenkins 实例就可以了。</p>
<h1 id="为.net-core-编写dockerfile文件">为.NET Core 编写Dockerfile文件</h1>
<p>Visual Studio 已经为我们集成了docker的支持,以是根本上我们是不须要编写Dockerfile文件的,只要鼠标右键点击项目,添加docker支持即可</p>
<p></p>
<p>这里我选择Linux版本</p>
<p></p>
<p>天生的Dockerfile文件如下</p>
<code>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"]</code>
<p>这里天生的文件着实是有点小标题的,由于我们是在项目中天生的Dockerfile文件,而上面的脚本中,COPY 的下令实行的目次却是从 /src 开始,如果我们直接实行 docker build ,会提示找不到该项目文件 src/Ron.Blogs/Ron.Blogs.csproj,精确的管理方法是将Dockerfile文件移动到src同级目次,即管理方案根目次下,如下图</p>
<p></p>
<h1 id="开始构建容器化实例">开始构建容器化实例</h1>
<p>由于我们将在容器中编译.NET Core 步调,以是当地服务器不须要安装 .NET Core SDK。接下来的事变就变得非常简朴了,上jenkins去创建一个使命,然后作一些简朴的配置后就开始构建。</p>
<h2 id="起首创建使命">起首创建使命</h2>
<p></p>
<h2 id="配置git堆栈地址">配置git堆栈地址</h2>
<p></p>
<h2 id="配置实行shell下令">配置实行shell下令</h2>
<p></p>
<h2 id="输入下面的脚本">输入下面的脚本</h2>
<code>docker build-t blogs .
docker run --rm -d --name blogs -p 15002:80 blogs
echo "success"</code>
<p>就如许,一个完备的流程走完了,现在访问容器实例地址: <a href="http://172.16.1.202:15002/api/blog/detail/1" >http://172.16.1.202:15002/api/blog/detail/1</a></p>
<p></p>
<p>完善运行乐成!</p>
<h1 id="留意事项">留意事项</h1>
<p>上面的脚本在第一次运行的时间没有标题,但是在第二次构建的时间,将会提示实例名称 blogs 已存在,我们须要修改一下构建脚本,到场 docker stop blogs</p>
<code>docker build-t blogs .
docker stop blogs
docker run --rm -d --name blogs -p 15002:80 blogs
echo "success"</code>
<h2 id="竣事语">竣事语</h2>
<p>上面就是本次的快速拥抱CI/CD的全部内容,看完点赞,保持好风俗!</p>
页: [1]
查看完整版本: 超简单让.NET Core开发者快速拥有CI/CD的能力-Docker版本