宝哥软件园

实现CentOS 7 Docker Jenkins ASP.NET核心2.0的自动发布和部署

编辑:宝哥软件园 来源:互联网 时间:2021-08-31

前言

Docker一直非常火爆,一直想把原来的Jenkins自动部署工具搬到Docker。但是今年我一直忙于各种事情,一直没有落实这个事情,正好赶上dotnet core 2.0的正式发布。在升级项目时,詹金斯将被直接转移到Docker。为什么要写这篇文章?大多数文章都是基于Ubuntu来安装的。net core或GitLab进行持续集成和自动部署等。没有人试图在Centos7.3上部署Jenkins并构建ASP.NET核心2.0应用程序。当然不知道为什么ubuntu会受到这么多人的青睐。

接下来,从这篇博文中,作者将大致教你如何安装Docker和Jenkins,并使用Visual Studio 2017创建一个新的Demo并实现自动部署。以下就不多说了。我们来看看详细的介绍。

环境准备

硬件配置:1核1G 1M带宽。50G硬盘。

系统环境:CentOS 7.3(64位)

其实用的是腾讯云

安装Docker

其实在安装Docker的过程中,可以在Docker官网找到自己对应的安装文档进行安装。Docker区分了CE和EE的两个版本。这两个版本有什么区别?相关资料请自行查阅,此处不做总结。教程用的是CE,所以找对应的官方文档安装。以下是安装教程的步骤

1.更新包,这样更无害

# sudo yum -y更新2。安装需要的软件包(其实这些腾讯云都有,只是怕少了一些阉割的系统,所以粘贴命令,安装的不会造成伤害)

# sudoyuminstal-yyum-utils device-mapper-persistent-data LVM 23。使用稳定版本的仓库(当然,您可以使用仓库的最新版本或测试版,这需要官方说明)

# sudo yum-config-manager -add-repo https://download.docker.com/linux/centos/docker-ce.repo4.安装Docker ce

# sudoyum在生产系统上安装docker-cetips :应该安装Docker CE的特定版本,而不是总是使用最新版本。

5.启动Docker

# sudo systemctl开始摘要6。docker通过运行hello-world image来验证安装是否正确。

# docker运行hello-world如果出现以下界面,则表示安装成功。

配置Docker加速器

这一步不是必须的,前提是你的环境有梯子或者网速可以,那么你可以忽略这一步。

$ curl-SSL https://get.daocloud.io/daotools/set_mirror.sh | SH-S https://mirror.ccs.tencentyun.com使用https://mirror.ccs.tencentyun.com作为加速地址,前提是必须使用腾讯云,不能对外访问,只有腾讯云可以使用这个镜像地址。可以使用DaoCloud加速地址,相关信息另行参考。

安装詹金斯

首先不要直接从Docker Store中拉取Jenkins的image文件,因为需要自动部署dotnet核心的Docker,直接在主机上操作Docker,所以需要将Docker挂载到Jenkins的Image上,所以现在需要自己编写Dockerfile来构建定制化的Jenkins。

#触摸Dockerfile# vim Dockerfile插入以下内容:

FROM jenkinsUSER root#清除基本图像设置的来源并切换到jessie腾讯云的来源#将腾讯云更改为aliyunnrun Echo ' '/etc/apt/sources . list . d/Jessie-backs . list Echo ' deb http://mirrors.tencentyun.com/debian Jessie main contrib non free '/etc/apt/sources . list Echo ' deb http://mirrors.tencentyun.com/debian Jessie-更新main contrib non free '/etc/apt/sources . list Echo ' deb http://mirrors.tencentyun.com/debian-security Jessie/更新main contrib non-free '/etc/apt/sources . list #更新来源并安装run curl-l https://github.com/Docker/Compose/releases/download/1 . 16 . 1/Docker-Compose-` uname-s `` uname-m `- o/usr/Local/bin/Docker-Composer unhmod x/usr/Local/bin/Docker-Compose如果没有安装libltdl7,将导致以下问题,因为jenkins容器内没有这样的包

docker:加载共享库时出错3360 libltdl.so.7:无法打开共享对象文件:没有这样的文件或目录构建步骤' Execut E-shell标记为失败的构建在jenkins操作主机的dock时会有拒绝访问的问题。事实上,容器的Jenkins用户无权访问容器外部的docker命令,因此RUN命令需要将Jenkins用户添加到Docker用户组中

构建图像

# docker构建。-t auto-Jenkins

上面的成功内容表明了詹金斯的成功安装

当您启动Jenkins时,您需要创建一个Jenkins配置目录,并将其装载到docker中的Jenkins目录中

# mkdir-p/var/jenkins _本垒打Jenkins

# docker run-name jenkins -p 808033608080-p 50000:50000 -v/var/run/docker . sock :/var/run/docker . sock -v $(哪个docker):/bin/docker -v/var/Jenkins _ home 3360/var/Jenkins _ home -d auto-Jenkins第一行:构建一个名为Jenkins-p的容器是运行开放端口的容器

第二行和第三行:-v是将主机的docker文件装入容器

第4行:创建主机的配置目录并将其装载到docker容器中,这样容器中的Jenkins配置目录文件将被映射出来

第五行:使用自动詹金斯图像,并在后台开始

这时,运行詹金斯将提示成功

执行docker ps命令后,我什么也没发现

执行docker ps -a命令查看

执行docker start -a jenkins,让容器前台输出运行信息

不难看出,Jenkins可以启动,但错误的信息是由权限问题造成的。

现在我需要看詹金斯的官方档案

知道问题的原因,并把代码写在上面。

# #修改/var/jenkins文件夹的权限# chown -R 1000 /var/jenkins_home继续运行jenkins代码

# docker run-name Jenkins-p 8080:8080-p 50000:50000 -v/var/run/docker . sock :/var/run/docker . sock -v $(哪个docker):/bin/docker -v/var/Jenkins _ home 3360/var/Jenkins _ home -d auto-Jenkins此时您将看到悲伤的提醒消息

容器以前已经运行过,因此容器已经存在。我会擦去你的眼泪。执行以下命令删除最初用完的容器

# docker rm -f jenkins删除容器后,继续执行run命令

# docker run-name Jenkins-p 8080:8080-p 50000:50000 -v/var/run/docker . sock :/var/run/docker . sock -v $(哪个docker):/bin/docker -v/var/Jenkins _ home 3360/var/Jenkins _ home -davuto-Jenkins,出现一串字符后,您会发现容器已经启动并这个时候可以用了吗?别担心,还有很长的路要走。

配置詹金斯

打开浏览器,输入您的IP:8080地址进行访问。你会很高兴看到这个界面。看到这个界面意味着你的Jenkins已经安装成功,但是需要配置。现在我将教你如何配置它。

首先,进入容器

# docker exec -it jenkins /bin/bash查看/var/Jenkins _ home/secrets/initial admin密码文件中的密码

# cat/var/Jenkins _ home/secrets/initial admin密码不一定要进入容器才能检查密码。您可以在主机环境中直接检查/var/Jenkins//secrets/initial admin密码的内容,因为作者之前已经在Docker中挂载过这个目录。

复制输出内容,将其粘贴到管理员密码中,输入exit退出容器,然后继续下一步,您将看到此界面,单击Install improved plugins

等待初始化完成

此时,自己填写。

使用VS2017创建一个ASP.NET核心2.0 web应用程序,并将代码上传到git。在这里,我将不演示上传代码的过程步骤。

我为你准备了一个地址来完成这个教程:http://git.oschina.net/wenalu/MvcTest

创建一个新的自由风格的软件项目,填写名称,然后单击确定

填写源代码控制

检查轮询配置管理来设置在Git上拉代码的时间间隔。在这里,我每两分钟拉一次

勾选在构建开始前删除工作区,将工作区设置为在构建前删除。

勾选“如果构建停滞,则中止构建”以设置构建超时。如果用于构建的时间超过了设置的时间,则构建被认为是失败的。作者在这里的超时是10分钟

添加一个执行外壳脚本,并填写以下脚本内容

#!/bin/bash#获取短版本号git hash=` git rev-parse-short head ` echo-remove-孤儿-docker-compose docker-compose . override . yml-p docker compose 4255153253317384266 down-RMI local-remove-orphansecho-Config-do cker-compose-f ./docker-compose . ci . Build . yml-p docker compose 42555153266 . 535353535353666366.-码头工人-作曲-f。/docker-compose.yml' -f '。/docker-compose . override . yml '-p docker compose 42551 . 32533174666

应用保存返回到项目界面。单击立即构建以部署SUCCESS

打开浏览器,输入您的IP:8088/

遇到的问题

其实以上篇幅只是简单介绍了一些途中的常见错误,以便大家尽快实现部署。实际上,在构建这个CI环境时,问题不止这些。比如开头Dockerfile的内容和教程里的不一样。事情是这样开始的:

FROM jenkinsUSER root#清除了基本镜像设置的来源,并切换到阿里巴巴云的Jessie source Runecho ' '/etc/apt/sources . list . d/Jessie-backs . list echo ' deb http://mirrors.tencentyun.com/debian Jessie main contrib non free '/etc/apt/sources . list echo ' deb http://mirrors.tencentyun.com/debian Jessie-updates main contrib non free '/etc/apt/sources . list echo ' deb http://mirrors.tencentyun.com/debian-security Jessie/updates main contrib non free '/etc/apt/sources . list #更新源代码并安装缺失的包runapt-getupdateapt-getinstall-y libltdl7 apt-getupdate arg docker GID=999 runecho的docker : x 3360 $ { docker GID } 3: jenkins '/etc/Group USER Jenkins当您在互联网上找到其他教程来教您如何安装Jenkins,并且您使用了与此内容类似的Dockerfile时,下面两个

第一:缺少码头工人

这种情况当然可以解决。首先进入容器,然后找到正式的安装文档——编写安装文档。jenkins使用Linux,直接找到相应的Linux安装资料。

第二:权威问题

从容器手动安装docker-compose将无法安装,因为Jenkins用户没有安装docker-compose的权限

要解决以上问题,当然可以切换root用户,但是作者用的是最笨最直接的方式,直接在建图的时候不使用jenkins user,所以教程中没有USER jenkins的最后一句话。这样做的目的是使教程步骤更加流畅

Tips:官方生产环境不建议直接切换到root用户运行

运行Jenkins命令是这样开始的:

# docker run-name Jenkins-p 8080:8080-p 50000:50000 -v/var/run/docker . sock :/var/run/docker . sock -v $(哪个docker):/bin/docker -v/var/Jenkins 3360/var/Jenkins _ home -d auto-Jenkins将导致您在构建目录时找到一个根本不存在的目录。

其实在第三句中,把/var/jenkins改成/var/jenkins_home就可以解决这个问题。

此时此刻,如果你曾经遇到过这样的问题,我现在已经帮你擦眼泪了。

当然,这里不仅有这些问题,在做本教程的时候也有一些没有说明。

写在最后

其实我有谷歌这些教程,但是什么都没找到。我发现很多人用Ubuntu,但是我找不到Centos的案例。当然,我不知道他们为什么喜欢用Ubuntu。在这里,我将实施过程中的经验分享给大家,因为我害怕很多人会犯和作者一样的错误,没有帮助的日子会很悲惨,即使我为社区做了这么久的一些贡献。

好了,这就是本文的全部内容。希望本文的内容对你的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。

更多资讯
游戏推荐
更多+