Jenkins docker部署springboot项目

1、创建jenkins容器

1,首先,我们需要创建一个 Jenkins 数据卷,用于存储 Jenkins 的配置信息。可以通过以下命令创建一个数据卷:

docker volume create jenkins_data

启动 Jenkins 容器并挂载数据卷:

docker run -dit --name=jenkins -p 9999:8080 -u=root --restart=always -v jenkins_data:/var/jenkins_home jenkins/jenkins

参数说明:

-i:表示运行容器
-t:表示容器启动后会进入其命令行
-d:守护式方式创建容器在后台运行
--name:容器名称
-p 9999:8080:端口映射,宿主机端口:jenkins 容器端口
-u=root:指定容器用户为 root 用户
--restart=always 参数用于在容器重启时自动启动,这样即使容器被删除,数据卷的数据也不会丢失
-v jenkins_data:/var/jenkins_home jenkins/jenkins:将数据卷 “jenkins_data” 挂载到容器的 /var/jenkins_home 目录上

2,然后执行以下命令,获取解锁jenkins的密码:

docker logs jenkins

浏览器登陆,输入上面日志的密码,并按提示安装插件:

http://localhost:9999/

3,安装maven:

docker exec -it jenkins apt-get update
docker exec -it jenkins apt-get install -y maven

4,最后重启 jenkins 容器:

docker restart jenkins

2、创建jenkins项目:

1,重新登陆 jenkins,点 New Item,新建流水线项目:

在这里插入图片描述
配置参考:https://blog.csdn.net/cs888zsy/article/details/132910601

其中Jenkins file脚本如下:

pipeline {agent anystages {stage('拉取代码') {agent nonesteps {echo '=====================拉取代码开始====================='git(url: 'https://github.com/xxx.git', credentialsId: 'JackyZhang8888', branch: 'main', changelog: true, poll: false)echo '=====================拉取代码完成====================='}}stage('编译打包') {steps {echo '=====================项目编译打包开始====================='sh 'mvn clean package -Dmaven.test.skip=true'echo '=====================项目编译打包完成====================='}}stage('拷贝项目') {steps {echo '=====================拷贝项目路径开始====================='sh '''BASE_DIR="/application"SOURCE_DIR="/var/jenkins_home/workspace/FileSystem/target/"DATE_FORMAT="%Y%m%d"DT=$(date +$DATE_FORMAT)TARGET_FOLDER="$BASE_DIR/$DT"if [ ! -d "$TARGET_FOLDER" ]; thenmkdir -p "$TARGET_FOLDER"ficp $SOURCE_DIR/*.jar "$TARGET_FOLDER"cp $SOURCE_DIR/*.jar "$BASE_DIR"'''echo '=====================拷贝项目路径完成====================='}}stage('Deploy') {steps {echo '=====================拷贝远程部署开始====================='// sshCommand remote: [name: 'Remote Server', command: 'cd /path/to/your/app && ./deploy.sh'], failOnError: trueecho '=====================拷贝远程部署完成====================='}}}
}

3,部署springboot到远程服务器

Publish Over SSH + OpenSSH:通过windows端安装openssh与jenkins建立ssh隧道可以实现sftp传输文件和远程执行命令

1、首先需要先在远程windows服务器安装openssh。通过PowerShell安装OpenSSH服务器:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

这些命令首先添加OpenSSH服务器功能,然后启动SSH服务,并将其设置为开机自动启动。也可以进入Windows 10 设置-应用-可选功能,添加可选应用,找到OpenSSH服务端并安装。

此时,验证容器telnet 22端口可以通:

docker exec -it jenkins telnet 192.168.0.107 22
Trying 192.168.0.107...
Connected to 192.168.0.107.
Escape character is '^]'.
SSH-2.0-OpenSSH_for_Windows_8.1

2、配置免密登陆:
(1)在C:\ProgramData\ssh\shd_config中增加如下配置:

PubkeyAuthentication yes

并在在该配置文件中确定公钥路径administrators_authorized_keys的位置:

Match Group administratorsAuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

(2)jenkins容器内生成SSH密钥对:

docker exec -it jenkins ssh-keygen -t rsa

将生成的公钥复制到远程服务器上的administrators_authorized_keys文件中,默认路径C:\Users\Administrator\.ssh\

(3)右键authorized_keys,选择属性->安全->高级->(左下角)禁用继承;
弹框选择“将已继承的权限转换为此对象的显式权限”。

(4)Win键+R键,输入并运行services.msc,打开服务列表,检查OpenSSH Authentication Agent服务是否正常运行。如果是禁用状态需要启用,然后重启一下sshd服务

此时重启openssh后jenkins服务器中使用如下命令连接windows应该是没问题的:

docker exec -it jenkins ssh -i /root/.ssh/id_rsa Administrator@192.168.0.107

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

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

相关文章

Leetcode—422. 有效的单词方块【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—422. 有效的单词方块 实现代码 class Solution { public:bool validWordSquare(vector<string>& words) {int row words.size();for(int i 0; i < row; i) {// 当前这一行的列数int col words[i].length(…

Java高阶私房菜:JVM性能优化案例及讲解

目录 核心思想 优化思考方向 压测环境准备 堆大小配置调优 调优前 调优后 分析结论 垃圾收集器配置调优 调优前 调优后 分析结论 JVM性能优化是一项复杂且耗时的工作&#xff0c;该环节没办法一蹴而就&#xff0c;它需要耐心雕琢&#xff0c;逐步优化至理想状态。“…

驾校考试宝典vip一点通驾考精简500题科目一四速记口诀c1答题技巧

下载地址&#xff1a;驾校考试宝典vip一点通驾考精简500题科目一四速记口诀c1答题技巧.zip 这份速记口诀考点总结 评分标准 和答题技巧&#xff0c;很详细&#xff0c;全科目速记口诀秘笈.pdf

QT中的容器

Qt中的容器 关于Qt中的容器类&#xff0c;下面我们来进行一个总结&#xff1a; Qt的容器类比标准模板库&#xff08;STL&#xff09;中的容器类更轻巧、安全和易于使用。这些容器类是隐式共享和可重入的&#xff0c;而且他们进行了速度和存储的优化&#xff0c;因此可以减少可…

mysql 指定根目录 迁移根目录

mysql 指定根目录 迁移根目录 1、问题描述2、问题分析3、解决方法3.1、初始化mysql前就手动指定mysql根目录为一个大的分区(支持动态扩容)&#xff0c;事前就根本上解决mysql根目录空间不够问题3.1.0、方法思路3.1.1、卸载mariadb3.1.2、下载Mysql安装包3.1.3、安装Mysql 8.353…

TouchGFX 总结

文章目录 使用中文字体多屏幕间交换数据UI to MCUMCU to UI API文档参考横竖屏切换 使用中文字体 添加一个textArea&#xff0c;默认的英文文本可见&#xff0c;输入中文字体后就看不见了&#xff0c;是因为这个默认的字体不支持中文&#xff0c;改一下字体就可以了&#xff1…

全方位解析Node.js:从模块系统、文件操作、事件循环、异步编程、性能优化、网络编程等高级开发到后端服务架构最佳实践以及Serverless服务部署指南

Node.js是一种基于Chrome V8引擎的JavaScript运行环境&#xff0c;专为构建高性能、可扩展的网络应用而设计。其重要性在于革新了后端开发&#xff0c;通过非阻塞I/O和事件驱动模型&#xff0c;实现了轻量级、高并发处理能力。Node.js的模块化体系和活跃的npm生态极大加速了开发…

网络基础-网络设备介绍

本系列文章主要介绍思科、华为、华三三大厂商的网络设备 网络设备 网络设备是指用于构建和管理计算机网络的各种硬件设备和设备组件。以下是常见的网络设备类型&#xff1a; 路由器&#xff08;Router&#xff09;&#xff1a;用于连接不同网络并在它们之间转发数据包的设备…

深入理解网络原理2----UDP协议

文章目录 前言一、UDP协议协议段格式&#xff08;简图&#xff09;校验和 二、UDP与TCP 前言 随着时代的发展&#xff0c;越来越需要计算机之间互相通信&#xff0c;共享软件和数据&#xff0c;即以多个计算机协同⼯作来完成业务&#xff0c;就有了⽹络互连。 一、UDP协议 协…

java发送请求-http和https

http和https区别 1、http是网络传输超文本协议&#xff0c;client---- http------ server 2、httpshttpssl证书&#xff0c;让网络传输更安全 &#xff0c;client---- httpssl------ server 3、ssl证书是需要客户端认可的&#xff0c;注意官方证书和jdk生成的证书的用户来使…

【Github】将github仓库作为图床使用

创建github仓库 首先创建一个github仓库专门用于存储图片&#xff0c;具体步骤如下&#xff1a; 1.点击新的仓库按钮 2.初始配置&#xff1a;随便填写一个仓库名&#xff1b;这里的仓库状态一定要是public公开的&#xff0c;不然后面访问不了图片 下载PicGo PicGo官网 在A…

获取淘宝商品销量数据接口

淘宝爬虫商品销量数据采集通常涉及以下几个步骤&#xff1a; 1、确定采集目标&#xff1a;需要明确要采集的商品类别、筛选条件&#xff08;如天猫、价格区间&#xff09;、销量和金额等数据。例如&#xff0c;如果您想了解“小鱼零食”的销量和金额&#xff0c;您需要设定好价…

【面试经典 150 | 数组】文本左右对齐

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;模拟 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容进行回顾…

C语言 | Leetcode C语言题解之第61题旋转链表

题目&#xff1a; 题解&#xff1a; struct ListNode* rotateRight(struct ListNode* head, int k) {if (k 0 || head NULL || head->next NULL) {return head;}int n 1;struct ListNode* iter head;while (iter->next ! NULL) {iter iter->next;n;}int add n…

【LeetCode刷题记录】230. 二叉搜索树中第K小的元素

230 二叉搜索树中第K小的元素 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1…

屏蔽罩材质和厚度对屏蔽效能的影响

​ 一&#xff0e;屏蔽效能的影响因素 屏蔽效能的影响因素主要有两个方面&#xff1a;屏蔽材料的特性和厚度&#xff1b;如下图所示&#xff0c;电磁波经过不同媒介时&#xff0c;会在分界面形成反射&#xff0c;穿过界面的电磁波一部分被反射回去&#xff0c;这部分能量损失…

音视频开发之旅——实现录音器、音频格式转换器和播放器(PCM文件转换为WAV文件、使用LAME编码MP3文件)(Android)

本文主要讲解的是实现录音器、音频转换器和播放器&#xff0c;在实现过程中需要把PCM文件转换为WAV文件&#xff0c;同时需要使用上一篇文章交叉编译出来的LAME库编码MP3文件。本文基于Android平台&#xff0c;示例代码如下所示&#xff1a; AndroidAudioDemo Android系列&am…

Leetcode—163. 缺失的区间【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—163. 缺失的区间 实现代码 class Solution { public:vector<vector<int>> findMissingRanges(vector<int>& nums, int lower, int upper) {int n nums.size();vector<vector<int>> an…

docker部署nginx并配置https

1.准备SSL证书&#xff1a; 生成私钥&#xff1a;运行以下命令生成一个私钥文件。 生成证书请求&#xff08;CSR&#xff09;&#xff1a;运行以下命令生成证书请求文件。 生成自签名证书&#xff1a;使用以下命令生成自签名证书。 openssl genrsa -out example.com.key 2048 …

目标检测——铁路轨道故障数据集

一、重要性及意义 安全性保障&#xff1a;铁路作为重要的交通工具&#xff0c;其安全性能直接关系到乘客和货物的安全。铁路轨道故障&#xff0c;如裂缝、变形、错位、缺失紧固件等&#xff0c;都可能引发列车脱轨、倾覆等严重事故。因此&#xff0c;及时发现和修复这些故障&a…