如何用 Jenkins+Docker 实现一键自动化部署

news2024/11/26 12:46:11

本文章实现最简单全面的Jenkins+docker+springboot 一键自动部署项目,步骤齐全,少走坑路。

环境:centos7+git(gitee)

简述实现步骤:在docker安装jenkins,配置jenkins基本信息,利用Dockerfile和shell脚本实现项目自动拉取打包并运行。

 

安装docker

docker 安装社区版本CE

确保 yum 包更新到最新。

yum update

卸载旧版本(如果安装过旧版本的话)

yum remove docker  docker-common docker-selinux docker-engine

安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

 

设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装docker

yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
yum install <自己的版本>  # 例如:sudo yum install docker-ce-17.12.0.ce

启动和开机启动

systemctl start docker
systemctl enable docker

验证安装是否成功

docker version

安装Jenkins

Jenkins中文官网:https://www.jenkins.io/zh/

安装J enkins

docker 安装一切都是那么简单,注意检查8080是否已经占用!如果占用修改端口

docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean

如果没改端口号的话

安装完成后访问地址-> http://{部署Jenkins所在服务IP}:8080

此处会有几分钟的等待时间。

初始化 Jenkins

详情见官网教程->https://www.jenkins.io

解锁 Jenkins

进入Jenkins容器:docker exec -it {Jenkins容器名} bash

例如 docker exec -it jenkins bash

查看密码:cat /var/lib/jenkins/secrets/initialAdminPassword

复制密码到输入框里面
 

 

安装插件

选择第一个:安装推荐的插件

 

创建管理员用户

此账户一定要记住哦

系统配置

安装需要插件

进入【首页】–【系统管理】–【插件管理】–【可选插件

搜索以下需要安装的插件,点击安装即可。

 

  • 安装Maven Integration

  • 安装Publish Over SSH(如果不需要远程推送,不用安装)

  • 如果使用Gitee 码云,安装插件Gitee(Git自带不用安装)

配置Maven

进入【首页】–【系统管理】–【全局配置】,拉到最下面maven–maven安装

 

创建任务

新建任务

点击【新建任务】,输入任务名称,点击构建一个自由风格的软件项目

 

源码管理

点击【源码管理】–【Git】,输入仓库地址,添加凭证,选择好凭证即可。

 

构建触发器

点击【构建触发器】–【构建】–【增加构建步骤】–【调用顶层Maven目标】–【填写配置】–【保存

 

此处命令只是install,看是否能生成jar包

clean install -Dmaven.test.skip=true

 

 

保存

点击【保存】按钮即可

测试

该功能测试是否能正常打包

构建

点击构建按钮

查看日志

点击正在构建的任务,或者点击任务名称,进入详情页面,查看控制台输出,看是否能成功打成jar包。

该处日志第一次可能下载依赖jar包失败,再次点击构建即可成功。

 

查看项目位置

cd /var/jenkins_home/workspace

 

ll命令即可查看是否存在

运行项目
因为我们项目和jenkins在同一台服务器,所以我们用shell脚本运行项目,原理既是通过dockerfile 打包镜像,然后docker运行即可。

Dockerfile

在springboot项目根目录新建一个名为Dockerfile的文件,注意没有后缀名,其内容如下:(大致就是使用jdk8,把jar包添加到docker然后运行prd配置文件)

FROM jdk:8
VOLUME /tmp
ADD target/zx-order-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8888
ENTRYPOINT ["Bash","-DBash.security.egd=file:/dev/./urandom","-jar","/app.jar","--spring.profiles.active=prd"]

修改jenkins任务配置

 配置如下:

 

-t:指定新镜像名
.:表示Dockfile在当前路径
cd /var/jenkins_home/workspace/zx-order-api
docker stop zx-order || true
docker rm zx-order || true
docker rmi zx-order || true
docker build -t zx-order .
docker run -d -p 8888:8888 --name zx-order zx-order:latest

备注:

  • 我上图用了docker logs -f 是为了方便看日志,真实不要用,因为会一直等待日志,构建任务会失败

  • 加|| true 是如果命令执行失败也会继续实行,为了防止第一次没有该镜像报错

保存

点击保存即可

构建

 

查看jenkins控制台输出,输出如下,证明成功!

验证

docker ps 查看是否有自己的容器
docker logs 自己的容器名 查看日志是否正确

浏览器访问项目试一试

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!


软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

图片

 整套资料获取

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/742798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

滴...这里有一道数据库操作型面试题,已到达,请查收~

系列文章传送门&#xff1a; 【七天入门数据库】第一天 MySQL的安装部署 【七天入门数据库】第二天 数据库理论基础 【七天入门数据库】第三天 MySQL的库表操作 题目&#xff1a;单表查询&#xff0c;根据提供的素材&#xff0c;按下列要求查询相关数据。 题目素材&#x…

前端vue入门(纯代码)27_路由的query参数

安静地努力&#xff01;&#xff01;&#xff01; 【25.Vue Router--路由的query参数】 多级路由在src/router/index.js中【三级路由】的配置如下&#xff1a; // 该文件专门用于创建整个应用的路由器 import VueRouter from "vue-router"; //引入组件 import Abo…

接口自动化测试要做什么?

先了解下接口测试流程&#xff1a; 1、需求分析2、Api文档分析与评审 3、测试计划编写 4、用例设计与评审5、环境搭建&#xff08;工具&#xff09; 6、执行用例 7、缺陷管理 8、测试报告 接口流程详细内容&#xff0c;请狠狠点击下面这篇文章&#xff0c; 《做接口测试的流程…

关于Vue 、vue2、vue3

vue优点&#xff1f;vue2、vue3响应式比较&#xff1f; &#xff08;1&#xff09; 响应式编程 Vue 会自动对页面中某些数据的变化做出响应。通过 MVVM 思想实现数据的双向绑定&#xff0c;让开发者不用再操作 DOM 对象&#xff0c;有更多的时间去思考业务逻辑。 组件化开发…

程序员,你喜欢写文档吗?

博主&#xff1a;爱码叔 个人博客站点&#xff1a; icodebook 公众号&#xff1a;漫话软件设计 微博&#xff1a;程序员涛哥 专注于软件设计与架构、技术管理。擅长用通俗易懂的语言讲解技术。对技术管理工作有自己的一定见解。文章会第一时间首发在个站上&#xff0c;欢迎大家…

【论文解读】A Fast Sub-pixel Motion Estimation Algorithm for H.264/AVC Video Coding

简介 题目&#xff1a;A Fast Sub-pixel Motion Estimation Algorithm for H.264/AVC Video Coding 原文&#xff1a;https://ieeexplore.ieee.org/document/5688303 级别&#xff1a;SCI 年份&#xff1a;2011 年 机构&#xff1a;上海交通大学 结论&#xff1a;亚像素搜索计…

【C++】unordered_map、unordered_set 模拟实现

文章目录 概念框架实现正反迭代器Find()、Insert() 、Erase()unordered_map 的 operator[ ] 源代码HashTable.hunordered_map.hunordered_set.h 概念 unordered_set 是含有 Key 类型唯一对象集合的关联容器。搜索、插入和移除拥有平均常数时间复杂度。在内部&#xff0c;元素并…

HTML页面通过Web3JS连接智能合约并调用其中接口

之前我们学习solidity 并用它编写了智能合约 登上区块链 然后也做了基本的测试 但是 其实在web3时代 前端依旧扮演者非常重要的角色 我们现在就来打通web3 从合约到页面的一个管理 首先 我们还是将自己的ganache环境起起来 然后 在我们之前智能合约的项目终端执行 truffle m…

Python-Go 文件操作和异常操作

目录 python的异常操作 异常是什么&#xff1f; 错误与异常的区别&#xff1a; 常见异常 Traceback 错误回溯 异常处理 异常处理的定义&#xff08;try - except&#xff09; 扩展&#xff08;可以捕获不同的错误、多except语句&#xff09;&#xff08;else - finall…

PFC离散元仿真,3DEC非连续岩石力学与结构问题分析

一、背景&#xff1a; 随着我国经济的发展&#xff0c;岩土工程涉及的要求从材料、理论到施工工艺都提出了全方位的系统升级。在岩土工程分析设计中&#xff0c;3DEC和PFC软件快速建模也一直是岩土工作者所关注的问题。3DEC是非连续岩石力学与结构问题的首选分析程序&#xff0…

C语言图书管理系统

一&#xff0c;开发环境 操作系统&#xff1a;windows10, windows11, linux, mac等。开发工具&#xff1a;Qt, vscode, visual studio等开发语言&#xff1a;c 二&#xff0c;功能需求 1. 图书信息管理&#xff1a; 这个功能的主要任务是保存和管理图书的所有信息。这应该包…

C++数据结构X篇_09_C++实现栈的顺序存储与链式存储

本篇参考C实现队列的顺序存储与链式存储整理&#xff0c;先搞懂结构框架&#xff0c;后期根据视频利用c对内容实现&#xff0c;也可以对c有更高的提升。 文章目录 1. 顺序存储2. 链式存储 队列是一种特殊的数据存储结构&#xff0c;与栈不同的是其数据存储与访问顺序为先进先出…

Python教程:全局变量和局部变量

变量的作用域始终是Python学习中一个必须理解掌握的环节&#xff0c;下面我们从局部变量和全局变量开始全面解析Python中变量的作用域。 所谓局部变量&#xff0c;指的是定义在函数内的变量。定义在函数内的变量&#xff0c;只能在函数内使用&#xff0c;它与函数外具有相同名…

GlasgowSmile-v2靶机复盘

GlasgowSmile-v2靶机复盘 这是一个非常难的靶机 这个靶机是直接给我们ip地址的&#xff0c;所以就不用去找ip地址了&#xff0c;直接对ip进行一个扫描。 发现开通了22&#xff0c;80&#xff0c;83&#xff0c;但是8080端口是个开启我们无法访问的状态&#xff0c;所以可以猜…

【Redis】—— Redis的RDB持久化机制

&#x1f4a7; 【 R e d i s 】—— R e d i s 的 R D B 持久化机制 \color{#FF1493}{【Redis】 —— Redis的RDB持久化机制} 【Redis】——Redis的RDB持久化机制&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞…

Springboot -- Mybatis + Mybatis Generate + KingbaseES8(pgsql) + 静态多数据源

&#x1f3db;&#x1f3db;&#x1f3db; 以下内容记录一次 Springboot 项目整和人大金仓数据库的过程 &#x1f3db;&#x1f3db;&#x1f3db; 文章目录 KingBaseES8SpringBoot整合KES8(pgsql)修改pom文件配置多数据源配置文件配置类 代码生成器配置JsonTypeHandler修改配…

[HDCTF2019]Maze(初识逆向)

下载附件解压&#xff0c;为了方便&#xff0c;我将文件名改为了maze.exe 一般我们先查壳&#xff0c;确实存在UPX壳 对于刚接触逆向的我&#xff0c;一键脱掉哈哈哈 不过还是要说一下&#xff0c;这种脱壳处理有可能会产生其它损坏或者影响&#xff0c;需要进行一定的修复 可…

Visio使用

1.Visio中字母上下标快捷键&#xff1a; 选中要成为上标的文字,ctrlshift"" 选中要成为下标的文字,ctrl"" 2.导入CAD文件 从 AutoCAD 版本 2007 到 2017 导入 .dwg 或 .dxf 文件。 3.编辑CAD文件 右键图形—CAD绘图对象—转换 选择高级 将默认选项改…

居安思危,测试员被裁了还能干什么?

2019年迎来了一大波大佬级公司裁员&#xff0c;包括了阿里、美团、知乎……。它们是各行业的独角兽公司&#xff0c;既是媒体关注的焦点&#xff0c;也是代表了行业风向的指针。 2019年的互联网&#xff0c;已经过了蓬勃发展期&#xff0c;接下来要迎接的更加平稳、规律的发展…

ECM能耗管理云平台

能源是企业运营中不可或缺的要素之一&#xff0c;直接影响企业的成本和竞争力。能源消耗和碳排放不断增长&#xff0c;对环境和可持续发展造成了严重影响。越来越多的企业开始关注并实施能耗管理云平台系统&#xff0c;以实现更高的能源效率、降低碳排放。 ECM能耗管理云平台系…