首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【CI/CD系列】使用Docker安装Jenkins

【CI/CD系列】使用Docker安装Jenkins

作者头像
老张的哲学
发布2022-04-11 15:40:20
发布2022-04-11 15:40:20
74300
代码可运行
举报
文章被收录于专栏:NetCore 从壹开始NetCore 从壹开始
运行总次数:0
代码可运行

今天这篇【跨平台】系列的第四章节,在之前的文章或视频中,已经对Docker讲的一些了,当然都没有深入讲解,《DockerDesktop桌面版》的视频以后再开吧,目前的这些已经基本能满足我们的需要,主要是部署相关的,这里也简单列举一些: 《[跨平台系列三Docker篇]:ASP.NET Core应用》 《ASPNetCore Docker容器化操作(上)》 《ASPNetCore Docker容器化操作 (下)》 《Docker 容器端口映射解析》 《Docker 部署VUE项目

那我们就继续往下走,其实如果你是跟着我的教程走的,肯定能发现,我是从windows到Linux,然后到Mysql,接着Docker,现在是Jenkins(CICD),这一步说完,就是到了微服务部分了,可能也就是到2021年了,希望今年赶快过去吧🍊。

废话不多说,今天还是老规矩,以后的文章和视频也基本都是无脑操作了,毕竟基础知识我已经讲了一年了,也应该学会长大了,不能一直啃底层了。

PS:现已支持镜像内用doc具体命令底部评论,本文简单的使用了Docker版Jenkins来部署容器,但是暂时不适用使用docker来部署dotnetcore应用程序的项目,下文会说到,如果想用docker来部署netcore,还是建议在宿主机里部署Jenkins,当然如果有更好的方案,我也会在下篇文章说明。

1 配置Docker环境

这一块主要是复习的目的,如果你还不会Docker的话,我希望你应该好好学学,我的文章和视频也都讲到了,都可以看看,比如上文提到的那几个链接。

我的系统是CentOS,2C4G5M的,安装完成后,内存占用情况如下,还是挺小的,就按照这个配置就行。

所以你可以根据自己的情况酌情选择服务器,要是1核1G的话就算了。

记得配置下安全组和端口开放规则。

购买新的服务器后,分步骤执行:

更新系统

代码语言:javascript
代码运行次数:0
运行
复制
//更新系统 
sudo yum update

(Linux更新系统结果图)

安装Docker

既然我们已经学会了使用Docker,那以后基本的安装都可以通过镜像来处理,包括在上节视频中说到的部署Vue项目,其实就是启动了一个nginx的镜像容器。

当然,其实你也可以自己去手动安装,无论是Linux还是Windows,但是麻烦的简直不要不要的,各种依赖,所以还是直接使用Docker吧。

#Step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 #Step 2: 添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #Step 3: 缓存并安装Docker-CE(可选) sudo yum makecache fast sudo yum -y install docker-ce #Step 4: 开启Docker服务 sudo service docker start #Step 5: 设置Docker开机自启动 systemctl enable docker #Step 6: 启动Docker systemctl start docker #Step 7: 查看版本 docker --version

到这里基本应该就能安装成功了,如果安装失败,可以看看具体的错误是什么,一般来说,我都是新服务器,更新完系统,先安装Docker,如果安装SDK的话,可能会有一个组件冲突,所以还是先安装Docker吧。

(Docker安装流程图)

你可以使用docker run hello-world 做下测试,如果没有问题,那就十分恭喜了。我们继续往下走,下边的才是今天的重点,安装部署Jenkins应用服务。

2 安装Jenkins服务

如果我们使用Docker镜像的话,可以直接Search下,可以看到有很多的镜像文件,

代码语言:javascript
代码运行次数:0
运行
复制
docker search jenkins

其中第一个和第二个其实都是官方的,但是第一个已经不维护了,我们一般都是使用的第二个。

这里有一个问题要先思考下,如果用镜像的方案的话,那如何在这个Jenkins容器里使用docker来构建我们的dotnet镜像?这个需要好好的想想,如果你的aspnetcore程序打算使用docker容器化的话,以下这个方案不一定是最终的方案,但是普通的dotnet xxx.dll的这种普通发布模式肯定是可以的,我以后会有文章继续说,此处按下不表。

构建Jenkins镜像

我们直接pull下来这个镜像,我这里用第三个测试,但是下文用的还是第二个镜像:

(自定义Jenkins镜像构建图) 但是这样是有问题的,因为jenkins的docker版本本身没有dotnetcore的环境,所以我们需要先自己动手制作下包含dotnet环境的jenkins的Docker的Container,所以我们就先创建一个包含dotnetcore的自定义Jenkins镜像吧,好像已经有人创建好了,具体名字我忘了,当然,其实我这个pull到dockerhub里,你也可以直接拿来用。

首先那我们在一个空的文件夹里,创建一个Dockerfile文件即可:

代码语言:javascript
代码运行次数:0
运行
复制
FROM jenkins/jenkins

# Switch to root to install .NET Core SDK
USER root

# Show distro information!
RUN uname -a && cat /etc/*release

# Based on instructiions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
# Install dependency for .NET Core 3
RUN apt-get update
RUN apt-get install -y curl libunwind8 gettext apt-transport-https

# Based on instructions at https://www.microsoft.com/net/download/linux-package-manager/debian9/sdk-current
# Install microsoft.qpg
RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-debian-stretch-prod stretch main" > /etc/apt/sources.list.d/dotnetdev.list'

# Install the .NET Core framework
RUN apt-get update
RUN apt-get install -y dotnet-sdk-3.1

# Switch back to the jenkins user.
USER jenkins

根据这个Dockerfile来构建一个新的镜像,

代码语言:javascript
代码运行次数:0
运行
复制
docker build -t my-docker-jenk .

生成容器实例

那下边我们就需要生成容器实例了。

创建一个jenkins的工作目录,可以自定义做相关的配置:

代码语言:javascript
代码运行次数:0
运行
复制
//创建工作目录 
mkdir /home/jenkins_home

//赋予权限 
chown -R 1000 /home/jenkins_home

然后我们来生成容器

代码语言:javascript
代码运行次数:0
运行
复制
docker run -d --name jenkins_01 -p 80:8080 -v /home/jenkins_01:/home/jenkins_01 my-docker-jenk

Jenkins默认的开放容器端口是8080和50000,但是你可以自定义宿主机的监听端口,比如我 这里就直接80端口了。

如果这个时候没有什么错误,那恭喜你,第二步已经完成,下一步就是要配置我们的Jenkins网站应用了。

3 配置Jenkins应用

随着上边我们的Jenkins服务的配置完成,他内部已经做了web服务的代理,直接可以在外网就可以访问了,输入我们的ip地址,因为上面我是80端口监听的,所以直接访问ip地址即可:

我们从页面也能看到,这里为了安全,需要一个超级管理员的密码,地址,就是在我们上边配置的文件夹下的文件里,请注意,这个文件夹是在容器里的,不是在我们的宿主机的,可以使用命令来查看:

代码语言:javascript
代码运行次数:0
运行
复制
// 进入容器 
docker exec -it jenkins_01 bash 
// 查看密码 
cat /var/jenkins_home/secrets/initialAdminPassword

我们把密钥拷贝出来,exit退出容器,添加到web应用的密码框内,右下角点击continue继续。

安装插件

这里首先可以左下角,看到Jenkins的版本,然后中间是两个选项,用来安装插件的,左边是默认常用的一些,右侧的是你可以自定义的一些插件,我们直接点击左侧的即可。

如果在安装插件的过程中,报错了,不用慌,你可以处理好,然后继续再执行一遍的,就算是Retry以后还不行,也可以Continue,安装好后,我们依然可以自定义安装插件:

安装插件后,没有问题,会跳转到用户配置页面,都是必填项。

然后配置实例(Jenkins URL 用于给各种Jenkins资源提供绝对路径链接的根地址。这意味着对于很多Jenkins特色是需要正确设置的,例如:邮件通知、PR状态更新以及提供给构建步骤的BUILD_URL环境变量。 推荐的默认值显示在尚未保存,如果可能的话这是根据当前请求生成的。最佳实践是要设置这个值,用户可能会需要用到。这将会避免在分享或者查看链接时的困惑。)

最后,配置成功!

进入到配置页面,还是很丰富的功能:

当然,如果系统管理里有错误,我们可以手动安装和修改:

那到了这里,我们的Jenkins已经完全的配置好了,下面就用一个helloworld来测试一下吧。

4 测试Hello world

创建测试项目的过程就忽略了,就是普通的aspnetcore的webapi程序。

1、创建自由风格的软件项目

2、添加源代码管理

3、构建命令

这个时候我们点击保存,然后执行下构建就行,

然后就可以看到1楼#1的构建状态变成了蓝色,如果报错是红色的,

正常的输出结果是这样的:

当然,如果有错误,你可以在控制台输出上看到内容,比如这里是没有安装dotnet,但是我们已经安装了,这就是文章开头我们说的那个问题。

到这里就已经没问题了,剩下的就是服务器代理的问题了,你可能会说,那如何才能配合nginx做远程代理,如果外网访问,blogcore和admin前后端又是如何构建和发布的呢,请看下回分解。

后记

因为微信公众号是不能频繁修改文章内容的,所以我这里放一个说明链接,如果文章有错误或者是有出入,这里会显示:

http://apk.neters.club/api/Blog/GoMore?id=139

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NetCore 从壹开始 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档