那我们就继续往下走,其实如果你是跟着我的教程走的,肯定能发现,我是从windows到Linux,然后到Mysql,接着Docker,现在是Jenkins(CICD),这一步说完,就是到了微服务部分了,可能也就是到2021年了,希望今年赶快过去吧🍊。
废话不多说,今天还是老规矩,以后的文章和视频也基本都是无脑操作了,毕竟基础知识我已经讲了一年了,也应该学会长大了,不能一直啃底层了。
PS:现已支持镜像内用doc具体命令底部评论,本文简单的使用了Docker版Jenkins来部署容器,但是暂时不适用使用docker来部署dotnetcore应用程序的项目,下文会说到,如果想用docker来部署netcore,还是建议在宿主机里部署Jenkins,当然如果有更好的方案,我也会在下篇文章说明。
1
配置Docker环境
这一块主要是复习的目的,如果你还不会Docker的话,我希望你应该好好学学,我的文章和视频也都讲到了,都可以看看,比如上文提到的那几个链接。
我的系统是CentOS,2C4G5M的,安装完成后,内存占用情况如下,还是挺小的,就按照这个配置就行。
所以你可以根据自己的情况酌情选择服务器,要是1核1G的话就算了。
记得配置下安全组和端口开放规则。
购买新的服务器后,分步骤执行:
//更新系统
sudo yum update
(Linux更新系统结果图)
既然我们已经学会了使用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 jenkins
(自定义Jenkins镜像构建图)
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来构建一个新的镜像,
docker build -t my-docker-jenk .
那下边我们就需要生成容器实例了。
创建一个jenkins的工作目录,可以自定义做相关的配置:
//创建工作目录
mkdir /home/jenkins_home
//赋予权限
chown -R 1000 /home/jenkins_home
然后我们来生成容器
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地址即可:
我们从页面也能看到,这里为了安全,需要一个超级管理员的密码,地址,就是在我们上边配置的文件夹下的文件里,请注意,这个文件夹是在容器里的,不是在我们的宿主机的,可以使用命令来查看:
// 进入容器
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
环境变量。
推荐的默认值显示在尚未保存,如果可能的话这是根据当前请求生成的。最佳实践是要设置这个值,用户可能会需要用到。这将会避免在分享或者查看链接时的困惑。)
最后,配置成功!
进入到配置页面,还是很丰富的功能:
当然,如果系统管理里有错误,我们可以手动安装和修改:
4
测试Hello world
2、添加源代码管理
3、构建命令
这个时候我们点击保存,然后执行下构建就行,
然后就可以看到1楼#1的构建状态变成了蓝色,如果报错是红色的,
正常的输出结果是这样的:
当然,如果有错误,你可以在控制台输出上看到内容,比如这里是没有安装dotnet,但是我们已经安装了,这就是文章开头我们说的那个问题。
到这里就已经没问题了,剩下的就是服务器代理的问题了,你可能会说,那如何才能配合nginx做远程代理,如果外网访问,blogcore和admin前后端又是如何构建和发布的呢,请看下回分解。
因为微信公众号是不能频繁修改文章内容的,所以我这里放一个说明链接,如果文章有错误或者是有出入,这里会显示:
http://apk.neters.club/api/Blog/GoMore?id=139