Jenkins自动部署springboot的Docker镜像,解决Status [1]问题

news2024/12/26 4:07:18

Jenkins凡是要指定路径的命令,一定要写绝对路径,不能写相对路径!不要以为配置了Remote directory,那么命令就会在Remote directory下执行!这种想法是错误的!!!

《jenkins自动化发布到服务器并自动运行》

第1种方法:使用外部Jar包完成自动化部署(简单方便),正式环境更新jar包时,备份一下旧的的jar包即可。

修改jenkins项目配置

Pre Steps 构建前清除旧的jar包,然后停止容器

在这里插入图片描述

rm -rf /jenkins/gitlabdemo/*
docker stop gitlabdemo

Post Steps构建启动容器

在这里插入图片描述

docker start gitlabdemo

先执行一次jenkins构建,会报ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]],这个错是因为我们没有相应的容器。这时候我们去部署服务器执行一次下面这条命令即可。
-v后面的jar包路径无法模糊匹配,所以修改版本号的时候,也要相应修改docker命令

docker run -d -p 9090:9090 --privileged=true --restart=always --name gitlabdemo -v /jenkins/gitlabdemo/gitlabdemo-1.jar:/gitlabdemo/gitlabdemo.jar openjdk:8-jre-alpine java -jar /gitlabdemo/gitlabdemo.jar

然后重新执行一次jenkins构建


第2种方法:Dockerfile打包成docker镜像(灵活),相对来说比较麻烦一点,而且占用存储空间比较多!

springboot项目根路径与pom.xml同级创建Dockerfile文件

在这里插入图片描述

#jdk版本
FROM openjdk:8-jre-alpine
#时区
ENV TZ=Asia/Shanghai
#JVM参数
ENV JAVA_OPTS="-Xms256m -Xmx256m"
#映射端口
EXPOSE 9090 9090
#指定工作文件夹,那么执行Dockerfile也要进入到这个文件夹执行,否则会报错
WORKDIR /jenkins/gitlabdemo
#把jar包放入镜像内
ADD gitlabdemo*.jar /gitlabdemo.jar
#启动参数
ENTRYPOINT ["nohup","java","-jar","/gitlabdemo.jar","&"]

推送到gitlab以后,回到jenkins

Pre Steps(构建前)

在这里插入图片描述
这个rm -rf一定要指定到具体的文件夹,否则会执行失败!不要以为上面指定了remote dir,就以为当前在remote dir下!这种想法是错误的!凡是需要到某个目录的均要指定绝对路径!!!

rm -rf /jenkins/gitlabdemo/*
docker stop gitlabdemo
docker rm -f gitlabdemo
docker rmi -f gitlabdemo

Post Steps(构建)

第1个Transfer Set

在这里插入图片描述

第2个Transfer Set

在这里插入图片描述
再次申明一次!不要以为配置了Remote directory,那么命令就会在Remote directory下执行!这种想法是错误的!!!

cd /jenkins/gitlabdemo && docker build -t gitlabdemo . && docker run -d -p 9090:9090 --name gitlabdemo gitlabdemo

关于:ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]]
这个错误就是你的命令有问题,即Exec command下写的命令有问题!首先排查执行命令时是否指定了文件的路径!如:sh a.sh。假设文件路径是/root/a.sh。这样执行就会有问题!因此应该写成sh /root/a.sh

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

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

相关文章

机器学习实战教程(五):朴素贝叶斯实战篇

一、前言 上篇文章机器学习实战教程(四):朴素贝叶斯基础篇_M_Q_T的博客-CSDN博客讲解了朴素贝叶斯的基础知识。本篇文章将在此基础上进行扩展,你将看到以下内容: 拉普拉斯平滑垃圾邮件过滤(Python3)新浪新闻分类(skle…

毕业设计 - 基于Java的敬老院管理系统设计与实现【源码+论文】

文章目录前言一、项目设计1. 模块设计系统的主要功能性需求2. 实现效果二、部分源码项目源码前言 今天学长向大家分享一个 java web项目: 基于Java的敬老院管理系统设计与实现 一、项目设计 1. 模块设计 站在护工角度来看,他们迫切希望,在运用该系统…

【Flink】Flink Starting Offset 启动消费位置 指定时间消费

文章目录 1.概述2.测试3.源码1.概述 首先参考文章:【Flink】Flink 1.14.0 全新的 Kafka Connector Kafka Source 能够通过指定 OffsetsInitializer来消费从不同偏移量开始的消息。内置的初始值设定项包括: KafkaSource.builder()// Start from committed offset of the co…

【YOLOv7-环境搭建③】PyCharm安装和环境、解释器配置

下载链接: 来源:(博主)唐三. 链接:https://pan.baidu.com/s/1y6s_EScOqvraFcx7iPSy1g 提取码:m1oa 安装: 以管理员身份打开安装完成后,打开软件到达以下界面,框框全选到达以下界面&#xf…

【指纹识别】指纹识别匹配门禁系统【含GUI Matlab源码 587期】

⛄一、指纹识别简介 1 指纹识别的引入和原理 1.1 指纹的基本知识 指纹,由于其具有终身不变性、唯一性和方便性,已几乎成为生物特征识别的代名词。指纹是指人的手指末端正面皮肤上凸凹不平产生的纹线。纹线有规律的排列形成不同的纹型。纹线的起点、终点…

kotlin基础学习笔记第九章——泛型

实化类型参数允许你在运行时的内联函数中引用作为类型实参的具体类型(对普通的类和函数来说,这样行不通,因为类型实参在运行时会被擦除)。 声明点变型可以说明一个带类型参数的泛型类型,是否是另一个泛型类型的子类型或…

什么是MySQL插入意向锁?

Insert Intention Lock,中文我们也称之为插入意向锁。 这个可以算是对我们之前所讲的 Gap Lock 的一个补充,关于 Gap Lock,如果还有小伙伴不懂,可以参考:记录锁、间隙锁与 Next-Key Locks。 1. 为什么需要插入意向锁…

吃透Chisel语言.40.Chisel实战之单周期RISC-V处理器实现(下)——具体实现和最终测试

Chisel实战之单周期RISC-V处理器实现(下)——具体实现和最终测试 上一篇文章中我们对本项目的需求进行了分析,并得到了初步的设计,这一篇文章我们就可以基于该设计来实现我们的单周期RISC-V处理器了。实现之后也必须用实际代码来…

[ 数据结构 -- 手撕排序算法第三篇 ] 希尔排序

文章目录前言一、常见的排序算法二、希尔排序2.1 希尔排序(缩小增量排序)2.1.1 预排序阶段2.1.2 插入排序阶段2.2 单趟希尔排序2.2.1 思路分析三、希尔排序实现代码四、希尔排序的时间复杂度五、希尔排序和直接插入排序效率测试5.1 测试5.2 结论5.2.1 随机数比较5.2.2 有序数组…

【二维码识别】灰度+二值化+校正二维码生成与识别【含GUI Matlab源码 635期】

⛄一、二维码生成与识别简介 如今,移动互联网技术日新月异,随着5G时代的来临,广泛应用于数据处理过程中的二维码信息安全日益成为人们越来越关注的问题。以QR码为代表的二维码,以其在信息存储、传输和识别技术领域优异的表现,成为信息共享、移动支付等领域的宠儿。不可避免地,…

利用深度学习生成数据的时间序列预测(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 数据分析研究目前仍是行业热点,相关学者从数据分析关键技术中的异常检测、入侵检测、时间序列预测等角度展开研究。然而,现有研…

Go环境搭建与IDE开发工具配置

安装Go语言编译器 Go语言编译器》编译器将源代码编译为可执行程序》源代码程序员使用高级语言所书写的代码文件》高级语言c/c/go…》机器语言0和1构成,机器能直接识别》汇编语言比机器语言稍微可读一点点的指令集 编译器下载地址 根据系统下载对应的go编译器版本…

微信小程序保存相册授权全过程:第一次授权、已授权、拒绝后再授权

微信小程序部分功能需要使用授权(也就是需要用户显式同意,系统会阻止开发者任何静默获取授权行为),以存储相册为例,用户需要获得"scope.writePhotosAlbum"权限 微信系统接口wx.getSetting可以获取已经获得的…

MySQL连接数据库

①MySQLpymysql ②django开发操作数据库,orm框架 安装第三方模块:orm pip install mysqlclient ORM Django链接数据库 在settings.py中修改 查看创建的数据库的端口号和用户名: Django操作表: 创建表 models.py from django…

[附源码]Python计算机毕业设计Django新冠疫苗接种预约系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

PDF怎么插入页?将页面添加到 PDF 文档的 3 种简单方法

得益于现代技术,我们现在可以轻松地合并、创建、编辑 PDF 并执行更多操作。使用专业的PDF程序在PDF文档中插入一页问题不大。这篇文章将介绍如何使用 奇客PDF编辑 和其他四个桌面和在线程序向 PDF 添加页面。 如何使用桌面程序将页面添加到 PDF 毫无疑问&#…

Simulink基础【2】- PID控制器

Simulink基础【2】- PID控制器1. Simulink作用回顾1.1 模块化1.2 常用模块1.2.1 输入信号源模块库(Sources)1.2.2 接收模块库(Sinks)1.2.3 系统模块1.2.4 数学运算模块1.3 界面布局与使用1.4 自定义模块2. PID算法仿真2.1 PID算法…

配置pytorch环境

一、安装cuda cudnn 1.下载cuda ,根据上一步安装pytorch的cuda版本对应,我的是cuda11.6 安装无脑下一步就可以了。 2.1下载cuDNN cuDNN 其实就是 CUDA 的一个补丁而已,专为深度学习运算进行优化的 2.2 配置cuDNN 解压压缩包,将文件夹里bin、…

Echarts中常用的参数总结以及参数自定义示例

🐱个人主页:不叫猫先生 🙋‍♂️作者简介:前端领域新星创作者、华为云享专家、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫系列专栏&#xff…

Springboot之Actuator的渗透测试和漏洞修复

Actuator 的 REST 接口 Actuator监控分成两类:原生端点和用户自定义端点;自定义端点主要是指扩展性,用户可以根据自己的实际应用,定义一些比较关心的指标,在运行期进行监控。 原生端点是在应用程序里提供众多 Web 接口…