使用jenkins一键部署.netcore mvc 之 docker环境


【前言】

  这个放在单独章节讲解,这里先占个地方,以后放个链接(*^_^*),大家可以先参考我之前参考的一篇博文 https://segmentfault.com/a/1190000007086764

  其实jenkins配置时候的坑比较多,简单介绍几个,或许大家碰上了,可以直接问我。

  1. 构造的时候提示没权限,permission问题

二、从Github上拉取代码执行命令的配置

  git的插件其实在jenkins安装过程中的推荐插件提示中有,如果直接安装了推荐的插件,那么无需再去安装。

  如果没有安装推荐插件,那么可以进入jenkins的系统管理

  管理插件

  安装git相关的插件

  这个应该很简单,不再赘述。

  我们打开一个项目(没有请新建),然后进入项目配置:

  输入项目的git地址,我这里写的是github的一个项目地址,地址可以直接打开github复制:

  该项填写的是项目的浏览地址,直接从浏览器地址栏复制

  然后写在这个位置

   还支持选择分支进行构建

  这个功能默认是没有的,需要安装一个插件,名称叫 Git Parameter 插件安装的方法之前已经介绍过了,一致的。安装好这个插件以后,就可以自由地配置参数化构建过程。

  源码管理继续填写git地址,直接从github复制项目地址

  

  然后填写在对应位置

   核心内容当然是构建时执行的命令了,我们下一节进行构建命令的详细剖析

2、创建一段jenkins构建命令(从shell脚本说起)

  我们上一节讲解了调用了一个目录下的shell脚本,那么我们这节就开始剖析这主要的脚本内容(构建过程分解),文章最后我们会将脚本全部放出来。

1、shell脚本的变量读取

  定义好目录,我们使用 echo 命令输出构建开始的提示信息。

  每次使用的都是同一个目录,构建之前先使用 rm -rf 命令清空发布目录(删除所有文件)

3、publish发布项目到准备好的目录

  为什么要有这个操作呢?

  为了项目的一些配置安全,比如连接字符串地址,服务器地址等敏感信息,如果都放在了github上,岂不是要被有心之人瞎搞。

  因此,我们自己将敏感信息配置文件放在一个特定的目录,构建的时候自动复制替换项目里面的配置文件。

  一切为了服务器的安全!

四、Docker容器命令详解

  docker命令我就不说了吧,有注释。

2、通过Dockerfile创建镜像,并映射端口Run容器

  上一点我们使用dockerfile构建了新的镜像,我们的dockerfile其实是随着解决方案一起存放着的。

  Dockerfile 其实很简单,在VS2017新建.netcore项目的时候,可以直接附带着自动建出来,如果没有,我们可以手动去创建。

  里面其实很简单,仅仅几行代码。

  1.描述了从微软的最新版的官方docker镜像作为基础创建新镜像(不清楚的了解一下docker的镜像机制)

  2.没啥好说的

  3.指定了工作目录,我们构建完毕后,会自动生成/publish文件夹

  4.对外暴露80端口

  5.复制文件到镜像内(必须的配置),会从/pulish目录复制项目代码到镜像中

  6.相关项目的入口点程序集

五、生成前的准备工作

  docker的安装是极其简单的,只需要简单的几行命令即可配置完成,这也是很多人喜爱docker的原因,无需复杂的各种软件运行环境的安装,即可简单搭建好一个程序应有的运行环境(前人都做好,而且不会出现看着别人的教程都会出各种问题的问题)。

$ #安装Docker
$ yum install docker
$ #启动docker服务
$ systemctl  start docker.service
$ #配置开机启动
$ systemctl  enable docker.service

  centos7安装docker的命令,非本文重点,如遇到问题,可以自行查找资料解决。

  2、微软官方镜像 docker.io/microsoft/aspnetcore:latest 的准备

  如果没有.netcore环境(可能涉及环境变量的配置),那么shell脚本中的dotnet命令将无从谈起。

  直接进微软官方的说明文档,很明确地讲解了.netcore环境的安装,当然墙外访问比较慢,如果不能流畅打开,那么只能听在下一面之词了。?

  官方链接在此:https://www.microsoft.com/net/learn/get-started/windows

  左侧选择Linux

  选择环境为Centos

  安装命令:

  Install the .NET SDK

  1、一键发布

  我们可以在控制台输出查看我们的构建过程

  拉取代码并Restore依赖包

  删除镜像,重新构建镜像

  从微软官方镜像,复制项目文件创建新镜像

  运行容器

  成功!

七、可能遇到的问题

八、鸣谢

  1.Dockerfile文件

#要构建的解决方案名称
solutionName=$1
#.sln文件全路径
solutionDir=$2
#.csproj文件全路径
csprojDir=$3
#docker run的容器名称
containerName=$4
#制定run的端口
port=$5

#项目发布的目录
webDir=/vdb1/jenkins/publish/webapp

#归档目录
archivesDir=/vdb1/jenkins/publish/archives

echo "7tiny:dotnet publish"

#清空文件夹
rm -rf ${webDir}/${JOB_NAME}/*

#发布网站到webDir dotnet publish ${JENKINS_HOME}/workspace/${JOB_NAME}/${csprojDir} -c Release -o ${webDir}/${JOB_NAME} /p:Version=1.0.${BUILD_NUMBER} #复制配置文件 cp -rf /vdb1/jenkins/DotNetCoreWebPublishToDockerCommonConfigs/* ${webDir}/${JOB_NAME}/ #停止docker容器 docker stop ${containerName} #删除当前容器 docker rm ${containerName} #删除镜像 docker rmi ${containerName} #通过Dockerfile重新构建镜像 docker build -t ${containerName} ${webDir}/${JOB_NAME}/. #docker run容器并绑定到端口 docker run -d -p ${port}:80 --name ${containerName} ${containerName} echo "7tiny:success!"

出处:https://www.cnblogs.com/7tiny/p/9119638.html