您现在的位置是:首页 > 正文

docker+jenkins 实现自动化部署

2024-02-29 14:07:42阅读 5

前期准备工作

工欲善其事必先利其器,所以前期的准备工作必须做好,那么我们要实现自动化部署,必须提前准备什么呢?哈哈哈,可能有一些小伙伴已经猜到了,我们需要一台自己的服务器,这里博主使用的自己够买一台腾讯云的轻量服务器,折扣完了才一百多块钱,当然小伙伴也可以考虑购买阿里云或者自己使用虚拟机来搭建环境实现自动化部署,好了下面进入正题

腾讯云服务器 : 购买

安装

1.先安装docker环境

如果在购买服务器选择docker环境的,这里就不需要在服务器先安装docker环境了,没有安装的要先安装docker环境可以参照博主这篇我和docker有个约会这篇文章将docker环境先安装好

2.使用docker-compose 编排的方式依次安装网关,docker的图形化管理界面portainer,jenkins,java,mysql,以及nginx

eg:如下图所示
在这里插入图片描述

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

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

3.初始化docker图像化管理工具portainer

安装完portainer图形化管理工具后,可以管理部署在docker中容器,通过公网ip加绑定宿主机对外暴露端口进行访问,如下图所示
在这里插入图片描述

4.初始化jenkins

安装完jenkins后,跟portainer一样,也可以通过暴露的端口访问,但是刚开始的时候进入jenkins,要从服务器获取jenkins初始密码去解锁jenkins

在这里插入图片描述
在网页中,输入密码然后继续。接下来会让我们选择需要的插件,第一次使用,安装推荐插件即可
在这里插入图片描述

在这里插入图片描述

如果因为网络原因安装失败,可以点击重试按钮进行重试。

接下来创建一个新的用户,也可以不创建新的用户,直接使用 admin 即可:

在这里插入图片描述
设置 Jenkins 访问地址:

在这里插入图片描述

设置完成后,我们点击保存并完成按钮即可。接下来就可以进入到 Jenkins 中了。

整个过程执行完毕后,建议通过图形化管理工具重启一下 Jenkins,因为有的插件需要重启之后才会生效。

4.1 安装插件

Jenkins 启动成功之后,接下来我们安装必要的插件:

  • Maven Integration:Maven 构建工具
  • Publish Over SSH:整个工具,将来把 Jenkins 打包好的 jar 上传到应用服务器上。
  • Gitee:协助使用 Gitee 仓库。
  • local
  • Backup
  • Fail The Build Plugin

安装步骤如下:

在这里插入图片描述
然后在可选插件中,搜索 Maven Integration 和 Publish Over SSH 以及 Gitee 等插件:

在这里插入图片描述
搜索完成后,点击 Install without restart。

安装成功之后,重启 Jenkins。

在这里插入图片描述
建议执行 docker restart jenkins 去重启,点击网页上的重启,会卡很久,还是执行 docker 重启命令靠谱一些。

4.2 配置jenkins

插件安装成功之后,接下来我们开启 Jenkins 的配置,在正式开始配置之前,先做一点准备工作。

这个需要我们提前准备好 Maven,服务器我们已经编排了jdk了,只需要提前准备 Maven 即可。为了避免权限问题,我们可以直接将 Maven 上传到 jenkins 容器中,然后去配置即可。

如下将宿主机中的 maven 拷贝到 Jenkins 容器中:

接下来就可以开始配置了,配置的位置如下图:

在这里插入图片描述
名字随意取,MAVEN_HOME 则是前面刚刚上传到服务器容器中的 MAVEN 目录。

4.3配置git

配置 Git,由于 Jenkins 容器中已经存在 git 了,所以这里不需要额外安装 git,默认即可。

在这里插入图片描述
所有都配置完成,点击保存按钮。

4.4 远程的凭证配置
4.4.1应用服务器信息

应用服务器,就是将来 Jenkins 将代码构建成 jar 包后,要上传的服务器的信息(地址、用户名以及密码)。

配置步骤如下,首先找到配置的位置:

在这里插入图片描述
往下拉找到 Publish Over SSH,然后点击新增,开始配置,Hostname 位置填写你服务器的域名或者 IP:
在这里插入图片描述
配置成功后,点击测试连接进行测试,确保连接是成功的。

有的小伙伴反馈这里用户名密码会导致 jar 包上传失败,要在应用服务器上生成 ssh 密钥对,然后将私钥配置给 Jenkins(这块大家结合自己情况来看,如果后面 jar 上传失败,可以回来改一下这里)。

4.4.2 配置凭证

要根据这些凭证,才能从 Gitee ,gitlab,码云等上拉取代码下来,点击 添加->Jenkins,添加凭证:

在这里插入图片描述

5.开始一个项目构建

首先我们新建一个任务
在这里插入图片描述

接下来我们选择构建一个 Maven 项目
在这里插入图片描述
点击确定之后,拉到源码管理位置,开始配置。

首先选择 Git,填入gitee/gitlab/码云上的仓库地址,然后凭证就写 gitee/gitlab/码云 的用户名/密码。

在这里插入图片描述

选择之前配置好的全局凭证

在这里插入图片描述
接下来输入项目构建命令,将来 Jenkins 从 Gitee 上拉取代码下来之后,就执行该命令对项目进行打包:
在这里插入图片描述
最后,配置上传构建好的文件,并执行启动命令,如下
在这里插入图片描述
在这里插入图片描述

根据上图的配置,我们使用 root 用户登录,root 登录成功之后,默认进入到 /root 目录下,接下来会自动进入到 data 目录,然后我们的 jar 包就上传到这个位置上。

然后我们在应用服务器上也提前准备好一个编排好文件叫restun-consumer-admin.yml,位于 /root/docker-develop/project/test 目录下,这个文件内容如下:

在这里插入图片描述
至此,这个项目就配置完成了。

保存之后,点击立即构建按钮,就可以开始构建了:
在这里插入图片描述

开始构建之后,可以点击构建按钮,查看构建过程:

在这里插入图片描述
点击控制台输出,可以查看整个构建过程:在这里插入图片描述
构建完成后,通过docker图形化管理工具,就可以看到我们的应用程序已经跑起来了。
在这里插入图片描述

网站文章

  • 前端基于WebSocket封装

    1.无心跳,短开连接之后重新连。class webSocketClass { constructor(name) { this.lockReconnect = false; this.l...

    2024-02-29 14:07:29
  • Android音视频学习系列(二) — 交叉编译动态库、静态库的入门

    Android音视频学习系列(二) — 交叉编译动态库、静态库的入门

    Android 原生开发包 (NDK) 可用于 Android 平台上的 C++ 开发,NDK 不仅仅是一个单一功能的工具,还是一个包含了 API 、交叉编译器、调试器、构建工具等得综合工具集。简单地...

    2024-02-29 14:07:03
  • OLTP、OLAP和列式存储数据库

    OLTP、OLAP和列式存储数据库

    1.OLTP 和 OLAP 1)OLTP:On-Line Transaction Processing联机事务处理过程(OLTP),也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送...

    2024-02-29 14:06:56
  • Java对象内存计算

    Java对象内存计算

    网上有人说64位JVM数组对象头大小为24字节,此处有疑问

    2024-02-29 14:06:51
  • 剑指offer——二叉树层序遍历及其相关延伸面试算法题

    目录从上到下打印二叉树II题目解析二叉树的右视图题目解析二叉树左视图从上到下打印二叉树II从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树:[3,9,20,...

    2024-02-29 14:06:43
  • hadoop2.7完全分布式搭建

    hadoop2.7完全分布式搭建

    环境准备 一共四台服务器,均为centos7, 安装jdk8 服务1 :192.168.1.38 服务2 :192.168.1.39 服务3 :192.168.1.40 服务4 : 192.168.1.41 1 修改主机名 为 s201 vi /etc/hostname 2 修改host文件 vi /etc/host 127.0.0.1 localhost 192.168.1.38 s20...

    2024-02-29 14:06:18
  • Angular中响应式表单 FormBuilder、FormControl 、FormGroup、FormArray、setControl、setValue用法总结

    以我的项目作为示例,总结一下Angular响应式表单的应用和常用的方法: 1.创建表单 form.ts代码 import { Component, OnInit } from "@angul...

    2024-02-29 14:06:11
  • 如何优雅的处理前端异常(前端高阶必备)

    如何优雅的处理前端异常(前端高阶必备)

    (内容同步自小邹的头条号:沪漂程序员的生活史)前端一直是距离用户最近的一层,随着产品的日益完善,我们会更加注重用户体验,而前端异常却如鲠在喉,甚是烦人。如何更好的处理前端异常有助于我们问题的排查和代码的规范化。 一、为什么要处理异常?异常是不可控的,会影响最终的呈现结果,但是我们有充分的理由去做这样的事情。增强用户体验; 远程定位问题; 未雨绸缪,及早发现问题; 无法...

    2024-02-29 14:06:00
  • qsort函数:可排序任何类型元素的函数

    qsort函数:可排序任何类型元素的函数

    函数简介调用时需要库函数<stdlib.h>void qsort (void* base, size_t num, size_t size, int (*compar)(cons...

    2024-02-29 14:05:31
  • 【生活工作经验 八】掌握大局,MBA考前调研

    【生活工作经验 八】掌握大局,MBA考前调研

    最近在给自己制定职业生涯规划,并且结合公司的职级职等制度,想要走M路线,而MBA无疑是一个重要的资本,好处有如下几种: 拓展视野和思维,跳出当前的局限,接受系统的管理者培养体系 拓展人脉,结识各行各业...

    2024-02-29 14:05:21