Docker + Jenkins 实现自动化部署实践

2021-08-23 12:01:17 浏览数 (1)

@toc

Author:Gorit

Date:2021/8/22

2021年发表博文:20/30

一、常规场景部署项目

1.1 正常情况部署项目

P1:

最近感觉总是用 sftp 工具连接到服务上,然后再去把项目更新为最新的代码,然后用 xshell 把项目重启运行。这是正常部署一个项目的简单流程。

P2:

或者是直接用 xshell 这样的工具,远程连接上服务器,直接拉取远程仓库的代码。然后重启项目—> 编译 —> 运行

1.2 Docker 部署项目

P3

Docker 容器化部署,我用的是 Docker,整体上和上面相差不大,替换最新的软件包,或者项目代码,然后用 Docker 构建容器,或者使用 docker-compose 一键构建。然后用 Docker 跑起来

P4:

目前貌似 K8S 更火一点,有空去学一手

1.3 提出疑问

这是最简答的单体应用,万一我们是微服务项目呢,可能有上百个项目。难道所有项目都要重启部署嘛,这样的话可多麻烦呀。

因此我们想一想有没有这样的工具,能够将我们提交到远程仓库的代码。自动拉取到服务器上,然后能够自动执行编译构建,然后重启呢?二、Jenkins 是啥?

2.1 Jenkins 简要介绍

不知道的童鞋可以先去网上查一下,这是个啥玩意。这里我就不科普了。用官方的话来说,就是一个 “持续集成,持续部署”的一个工具。这么理解就可以了。

需要深入了解的话,可以去 Jenkins 的官网查看。

Jenkins 官网

当然也有中文,大家各取所需即可。

2.2 Jenkins 解决的问题

然而上述 1.3 提到的问题,Jenkins 就是来解决这个问题。

这个东西的出现,大大简化了项目交付的能力。运维人员只需要编写好配置。开发人员就只需要提交代码即可,就能自动触发编译 和 部署了。

三、搭建 Jenkins 环境

安装方式有很多,但是我们今天重心是第三种3.1 Windows 下载

Windows 下载

3.2 Linux 安装

Linux 你可以采用虚拟机,也可以采用 <font color="red">云服务器</font>,如果没有云服务器,你可以点击下方链接购买

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年74元

PS:如果你是我的粉丝,你在使用云服务器遇到了问题,我可以给予解答

参考安装方式

Linux 下载

3.3 Docker Jenkins 环境搭建

如果你还不会 Docker,可以查看这篇文章

Docker 快速入门

  1. Linux 云服务器一台(CentOS 7.5 版本)
  2. Docker 安装(配置镜像源)

PS: 以下命令都是在 Linux Shell 下执行的

第一步:

  • 搜索 镜像
  • 或者去 docker hub 搜索镜像
代码语言:txt复制
docker search jenkins

第二步:

  • 拉取镜像docker pull jenkins/jenkins:lts

解释一下,这里为什么要用 TAG 为 lts。这个表示长久支持版。我门不下载 jenkins:latest,是因为 Jenkins 已经停止维护这个了,如果你装了这个,会出现各种用不了的问题,比如插件装不了等问题,我也踩过这个坑

第三步:

查看已经安装的镜像

代码语言:txt复制
docker images
在这里插入图片描述在这里插入图片描述

第四步:

创建一个目录,该目录用来挂在容器中 Jenkins 中的数据

代码语言:txt复制
cd home
mkdir jenkins_home

第五步:

使用 Docker 构建镜像 运行 Jenkins

代码语言:txt复制
docker run -d -p 8080:8080 -p 50000:50000 --restart=always -v /home/jenkins_home:/var/jenkins_home --name jenkins 3b4ec91827f2

这里我们挂在了两个端口, 8080 使我们服务器的访问端口,50000 是 Jenkins 的插件操作端口

如果启动报错,可能是 /home/jenkins_home 目录没有读写权限,给它加个权限就可以了

代码语言:txt复制
chmod 777 /home/jenkins_home

第六步:

Docker 启动成功后,可以看到如下界面

请添加图片描述请添加图片描述

我们按照它提示的目录找到密码解锁,因为我们是用 Docker 搭建的 Jenkins,上面的目录肯定是在自己的服务器上找不到的,但是我们做了容器卷挂载,一样可以找到对应的内容

代码语言:txt复制
cd /home/jenkins_home/secrets
cat initialAdminPassword

然后将控制台打印的密码 copy 进去即可

请添加图片描述请添加图片描述

根据它推荐的选择,第一个即可

请添加图片描述请添加图片描述

安装插件中

如果你需要手动安装插件,可以在这里

清华大学 Jenkins 镜像源

在这里插入图片描述在这里插入图片描述

然后你就进来了

四、构建你的第一个 自动化部署项目

4.1 Gitee Jenkins

篇幅太长,给大家提供一篇我尝试过的案例

如何配置 Gitee Jenkins

4.2 Github Jenkins

以后有就会了,我就补充进来

4.3 TODO

4.4 特别注意

由于我们是使用 Docker 搭建的 Jenkins。所有目录,环境是以 Docker 容器内部为主。在最后编写 Shell 的时候要特别注意,不然你可能改好了没有报错。但是就是看不到效果,因此这是你要特别注意的

0 人点赞